lit
align 4
LABELV validOrders
address $122
byte 4 1
address $123
byte 4 1
address $124
byte 4 2
address $125
byte 4 2
address $126
byte 4 3
address $127
byte 4 7
address $128
byte 4 4
address $129
byte 4 5
address $130
byte 4 6
align 4
LABELV numValidOrders
byte 4 9
code
proc CG_ValidOrder 8 8
file "../cg_servercmds.c"
line 32
;1:// Copyright (C) 1999-2000 Id Software, Inc.
;2://
;3:// cg_servercmds.c -- reliably sequenced text commands sent by the server
;4:// these are processed at snapshot transition time, so there will definately
;5:// be a valid snapshot this frame
;6:
;7:#include "cg_local.h"
;8:#include "../../ui/menudef.h"
;9:#if !defined(CL_LIGHT_H_INC)
;10:	#include "cg_lights.h"
;11:#endif
;12:
;13:typedef struct {
;14:	const char *order;
;15:	int taskNum;
;16:} orderTask_t;
;17:
;18:static const orderTask_t validOrders[] = {
;19:	{ VOICECHAT_GETFLAG,						TEAMTASK_OFFENSE },
;20:	{ VOICECHAT_OFFENSE,						TEAMTASK_OFFENSE },
;21:	{ VOICECHAT_DEFEND,							TEAMTASK_DEFENSE },
;22:	{ VOICECHAT_DEFENDFLAG,					TEAMTASK_DEFENSE },
;23:	{ VOICECHAT_PATROL,							TEAMTASK_PATROL },
;24:	{ VOICECHAT_CAMP,								TEAMTASK_CAMP },
;25:	{ VOICECHAT_FOLLOWME,						TEAMTASK_FOLLOW },
;26:	{ VOICECHAT_RETURNFLAG,					TEAMTASK_RETRIEVE },
;27:	{ VOICECHAT_FOLLOWFLAGCARRIER,	TEAMTASK_ESCORT }
;28:};
;29:
;30:static const int numValidOrders = sizeof(validOrders) / sizeof(orderTask_t);
;31:
;32:static int CG_ValidOrder(const char *p) {
line 34
;33:	int i;
;34:	for (i = 0; i < numValidOrders; i++) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $135
JUMPV
LABELV $132
line 35
;35:		if (Q_stricmp(p, validOrders[i].order) == 0) {
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
CNSTI4 3
LSHI4
ADDRGP4 validOrders
ADDP4
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $136
line 36
;36:			return validOrders[i].taskNum;
ADDRLP4 0
INDIRI4
CNSTI4 3
LSHI4
ADDRGP4 validOrders+4
ADDP4
INDIRI4
RETI4
ADDRGP4 $131
JUMPV
LABELV $136
line 38
;37:		}
;38:	}
LABELV $133
line 34
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $135
ADDRLP4 0
INDIRI4
ADDRGP4 numValidOrders
INDIRI4
LTI4 $132
line 39
;39:	return -1;
CNSTI4 -1
RETI4
LABELV $131
endproc CG_ValidOrder 8 8
proc CG_ParseScores 216 12
line 48
;40:}
;41:
;42:/*
;43:=================
;44:CG_ParseScores
;45:
;46:=================
;47:*/
;48:static void CG_ParseScores( void ) {
line 51
;49:	int		i, powerups, readScores;
;50:
;51:	cg.numScores = atoi( CG_Argv( 1 ) );
CNSTI4 1
ARGI4
ADDRLP4 12
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+5048
ADDRLP4 16
INDIRI4
ASGNI4
line 53
;52:
;53:	readScores = cg.numScores;
ADDRLP4 8
ADDRGP4 cg+5048
INDIRI4
ASGNI4
line 55
;54:
;55:	if (readScores > MAX_CLIENT_SCORE_SEND)
ADDRLP4 8
INDIRI4
CNSTI4 20
LEI4 $142
line 56
;56:	{
line 57
;57:		readScores = MAX_CLIENT_SCORE_SEND;
ADDRLP4 8
CNSTI4 20
ASGNI4
line 58
;58:	}
LABELV $142
line 60
;59:
;60:	if ( cg.numScores > MAX_CLIENTS ) {
ADDRGP4 cg+5048
INDIRI4
CNSTI4 32
LEI4 $144
line 61
;61:		cg.numScores = MAX_CLIENTS;
ADDRGP4 cg+5048
CNSTI4 32
ASGNI4
line 62
;62:	}
LABELV $144
line 64
;63:
;64:	cg.numScores = readScores;
ADDRGP4 cg+5048
ADDRLP4 8
INDIRI4
ASGNI4
line 66
;65:
;66:	cg.teamScores[0] = atoi( CG_Argv( 2 ) );
CNSTI4 2
ARGI4
ADDRLP4 20
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 20
INDIRP4
ARGP4
ADDRLP4 24
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+5056
ADDRLP4 24
INDIRI4
ASGNI4
line 67
;67:	cg.teamScores[1] = atoi( CG_Argv( 3 ) );
CNSTI4 3
ARGI4
ADDRLP4 28
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 28
INDIRP4
ARGP4
ADDRLP4 32
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+5056+4
ADDRLP4 32
INDIRI4
ASGNI4
line 69
;68:
;69:	memset( cg.scores, 0, sizeof( cg.scores ) );
ADDRGP4 cg+5064
ARGP4
CNSTI4 0
ARGI4
CNSTI4 1920
ARGI4
ADDRGP4 memset
CALLP4
pop
line 70
;70:	for ( i = 0 ; i < readScores ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $157
JUMPV
LABELV $154
line 72
;71:		//
;72:		cg.scores[i].client = atoi( CG_Argv( i * 14 + 4 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 4
ADDI4
ARGI4
ADDRLP4 40
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064
ADDP4
ADDRLP4 44
INDIRI4
ASGNI4
line 73
;73:		cg.scores[i].score = atoi( CG_Argv( i * 14 + 5 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 5
ADDI4
ARGI4
ADDRLP4 52
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 52
INDIRP4
ARGP4
ADDRLP4 56
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+4
ADDP4
ADDRLP4 56
INDIRI4
ASGNI4
line 74
;74:		cg.scores[i].ping = atoi( CG_Argv( i * 14 + 6 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 6
ADDI4
ARGI4
ADDRLP4 64
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 64
INDIRP4
ARGP4
ADDRLP4 68
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+8
ADDP4
ADDRLP4 68
INDIRI4
ASGNI4
line 75
;75:		cg.scores[i].time = atoi( CG_Argv( i * 14 + 7 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 7
ADDI4
ARGI4
ADDRLP4 76
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 76
INDIRP4
ARGP4
ADDRLP4 80
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+12
ADDP4
ADDRLP4 80
INDIRI4
ASGNI4
line 76
;76:		cg.scores[i].scoreFlags = atoi( CG_Argv( i * 14 + 8 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 8
ADDI4
ARGI4
ADDRLP4 88
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 88
INDIRP4
ARGP4
ADDRLP4 92
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+16
ADDP4
ADDRLP4 92
INDIRI4
ASGNI4
line 77
;77:		powerups = atoi( CG_Argv( i * 14 + 9 ) );
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 9
ADDI4
ARGI4
ADDRLP4 96
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 96
INDIRP4
ARGP4
ADDRLP4 100
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 100
INDIRI4
ASGNI4
line 78
;78:		cg.scores[i].accuracy = atoi(CG_Argv(i * 14 + 10));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 10
ADDI4
ARGI4
ADDRLP4 108
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 108
INDIRP4
ARGP4
ADDRLP4 112
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+24
ADDP4
ADDRLP4 112
INDIRI4
ASGNI4
line 79
;79:		cg.scores[i].impressiveCount = atoi(CG_Argv(i * 14 + 11));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 11
ADDI4
ARGI4
ADDRLP4 120
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 120
INDIRP4
ARGP4
ADDRLP4 124
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+28
ADDP4
ADDRLP4 124
INDIRI4
ASGNI4
line 80
;80:		cg.scores[i].excellentCount = atoi(CG_Argv(i * 14 + 12));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 12
ADDI4
ARGI4
ADDRLP4 132
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 132
INDIRP4
ARGP4
ADDRLP4 136
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+32
ADDP4
ADDRLP4 136
INDIRI4
ASGNI4
line 81
;81:		cg.scores[i].guantletCount = atoi(CG_Argv(i * 14 + 13));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 13
ADDI4
ARGI4
ADDRLP4 144
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 144
INDIRP4
ARGP4
ADDRLP4 148
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+36
ADDP4
ADDRLP4 148
INDIRI4
ASGNI4
line 82
;82:		cg.scores[i].defendCount = atoi(CG_Argv(i * 14 + 14));
ADDRLP4 152
CNSTI4 14
ASGNI4
ADDRLP4 152
INDIRI4
ADDRLP4 0
INDIRI4
MULI4
ADDRLP4 152
INDIRI4
ADDI4
ARGI4
ADDRLP4 160
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 160
INDIRP4
ARGP4
ADDRLP4 164
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+40
ADDP4
ADDRLP4 164
INDIRI4
ASGNI4
line 83
;83:		cg.scores[i].assistCount = atoi(CG_Argv(i * 14 + 15));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 15
ADDI4
ARGI4
ADDRLP4 172
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 172
INDIRP4
ARGP4
ADDRLP4 176
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+44
ADDP4
ADDRLP4 176
INDIRI4
ASGNI4
line 84
;84:		cg.scores[i].perfect = atoi(CG_Argv(i * 14 + 16));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 16
ADDI4
ARGI4
ADDRLP4 184
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 184
INDIRP4
ARGP4
ADDRLP4 188
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+52
ADDP4
ADDRLP4 188
INDIRI4
ASGNI4
line 85
;85:		cg.scores[i].captures = atoi(CG_Argv(i * 14 + 17));
CNSTI4 14
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 17
ADDI4
ARGI4
ADDRLP4 196
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 196
INDIRP4
ARGP4
ADDRLP4 200
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064+48
ADDP4
ADDRLP4 200
INDIRI4
ASGNI4
line 87
;86:
;87:		if ( cg.scores[i].client < 0 || cg.scores[i].client >= MAX_CLIENTS ) {
ADDRLP4 204
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 204
INDIRI4
ADDRGP4 cg+5064
ADDP4
INDIRI4
CNSTI4 0
LTI4 $187
ADDRLP4 204
INDIRI4
ADDRGP4 cg+5064
ADDP4
INDIRI4
CNSTI4 32
LTI4 $183
LABELV $187
line 88
;88:			cg.scores[i].client = 0;
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064
ADDP4
CNSTI4 0
ASGNI4
line 89
;89:		}
LABELV $183
line 90
;90:		cgs.clientinfo[ cg.scores[i].client ].score = cg.scores[i].score;
ADDRLP4 208
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
CNSTI4 788
ADDRLP4 208
INDIRI4
ADDRGP4 cg+5064
ADDP4
INDIRI4
MULI4
ADDRGP4 cgs+43024+108
ADDP4
ADDRLP4 208
INDIRI4
ADDRGP4 cg+5064+4
ADDP4
INDIRI4
ASGNI4
line 91
;91:		cgs.clientinfo[ cg.scores[i].client ].powerups = powerups;
CNSTI4 788
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg+5064
ADDP4
INDIRI4
MULI4
ADDRGP4 cgs+43024+148
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 93
;92:
;93:		cg.scores[i].team = cgs.clientinfo[cg.scores[i].client].team;
ADDRLP4 212
CNSTI4 60
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 212
INDIRI4
ADDRGP4 cg+5064+56
ADDP4
CNSTI4 788
ADDRLP4 212
INDIRI4
ADDRGP4 cg+5064
ADDP4
INDIRI4
MULI4
ADDRGP4 cgs+43024+68
ADDP4
INDIRI4
ASGNI4
line 94
;94:	}
LABELV $155
line 70
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $157
ADDRLP4 0
INDIRI4
ADDRLP4 8
INDIRI4
LTI4 $154
line 95
;95:	CG_SetScoreSelection(NULL);
CNSTP4 0
ARGP4
ADDRGP4 CG_SetScoreSelection
CALLV
pop
line 96
;96:}
LABELV $139
endproc CG_ParseScores 216 12
proc CG_ParseTeamInfo 68 4
line 104
;97:
;98:/*
;99:=================
;100:CG_ParseTeamInfo
;101:
;102:=================
;103:*/
;104:static void CG_ParseTeamInfo( void ) {
line 108
;105:	int		i;
;106:	int		client;
;107:
;108:	numSortedTeamPlayers = atoi( CG_Argv( 1 ) );
CNSTI4 1
ARGI4
ADDRLP4 8
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 numSortedTeamPlayers
ADDRLP4 12
INDIRI4
ASGNI4
line 110
;109:
;110:	for ( i = 0 ; i < numSortedTeamPlayers ; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $206
JUMPV
LABELV $203
line 111
;111:		client = atoi( CG_Argv( i * 6 + 2 ) );
CNSTI4 6
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 2
ADDI4
ARGI4
ADDRLP4 16
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 20
INDIRI4
ASGNI4
line 113
;112:
;113:		sortedTeamPlayers[i] = client;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 sortedTeamPlayers
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 115
;114:
;115:		cgs.clientinfo[ client ].location = atoi( CG_Argv( i * 6 + 3 ) );
CNSTI4 6
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 3
ADDI4
ARGI4
ADDRLP4 24
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 788
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+43024+112
ADDP4
ADDRLP4 28
INDIRI4
ASGNI4
line 116
;116:		cgs.clientinfo[ client ].health = atoi( CG_Argv( i * 6 + 4 ) );
CNSTI4 6
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 4
ADDI4
ARGI4
ADDRLP4 32
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 32
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 788
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+43024+116
ADDP4
ADDRLP4 36
INDIRI4
ASGNI4
line 117
;117:		cgs.clientinfo[ client ].armor = atoi( CG_Argv( i * 6 + 5 ) );
CNSTI4 6
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 5
ADDI4
ARGI4
ADDRLP4 40
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 788
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+43024+120
ADDP4
ADDRLP4 44
INDIRI4
ASGNI4
line 118
;118:		cgs.clientinfo[ client ].curWeapon = atoi( CG_Argv( i * 6 + 6 ) );
ADDRLP4 48
CNSTI4 6
ASGNI4
ADDRLP4 48
INDIRI4
ADDRLP4 0
INDIRI4
MULI4
ADDRLP4 48
INDIRI4
ADDI4
ARGI4
ADDRLP4 52
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 52
INDIRP4
ARGP4
ADDRLP4 56
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 788
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+43024+124
ADDP4
ADDRLP4 56
INDIRI4
ASGNI4
line 119
;119:		cgs.clientinfo[ client ].powerups = atoi( CG_Argv( i * 6 + 7 ) );
CNSTI4 6
ADDRLP4 0
INDIRI4
MULI4
CNSTI4 7
ADDI4
ARGI4
ADDRLP4 60
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 60
INDIRP4
ARGP4
ADDRLP4 64
ADDRGP4 atoi
CALLI4
ASGNI4
CNSTI4 788
ADDRLP4 4
INDIRI4
MULI4
ADDRGP4 cgs+43024+148
ADDP4
ADDRLP4 64
INDIRI4
ASGNI4
line 120
;120:	}
LABELV $204
line 110
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $206
ADDRLP4 0
INDIRI4
ADDRGP4 numSortedTeamPlayers
INDIRI4
LTI4 $203
line 121
;121:}
LABELV $202
endproc CG_ParseTeamInfo 68 4
export CG_ParseServerinfo
proc CG_ParseServerinfo 164 16
line 132
;122:
;123:
;124:/*
;125:================
;126:CG_ParseServerinfo
;127:
;128:This is called explicitly when the gamestate is first received,
;129:and whenever the server updates any serverinfo flagged cvars
;130:================
;131:*/
;132:void CG_ParseServerinfo( void ) {
line 136
;133:	const char	*info;
;134:	char	*mapname;
;135:
;136:	info = CG_ConfigString( CS_SERVERINFO );
CNSTI4 0
ARGI4
ADDRLP4 8
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 8
INDIRP4
ASGNP4
line 137
;137:	cgs.gametype = atoi( Info_ValueForKey( info, "g_gametype" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $219
ARGP4
ADDRLP4 12
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32960
ADDRLP4 16
INDIRI4
ASGNI4
line 138
;138:	trap_Cvar_Set("g_gametype", va("%i", cgs.gametype));
ADDRGP4 $220
ARGP4
ADDRGP4 cgs+32960
INDIRI4
ARGI4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $219
ARGP4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 139
;139:	cgs.needpass = atoi( Info_ValueForKey( info, "needpass" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $223
ARGP4
ADDRLP4 24
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32992
ADDRLP4 28
INDIRI4
ASGNI4
line 140
;140:	cgs.jediVmerc = atoi( Info_ValueForKey( info, "g_jediVmerc" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $225
ARGP4
ADDRLP4 32
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 32
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32996
ADDRLP4 36
INDIRI4
ASGNI4
line 141
;141:	cgs.wDisable = atoi( Info_ValueForKey( info, "wdisable" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $227
ARGP4
ADDRLP4 40
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+33000
ADDRLP4 44
INDIRI4
ASGNI4
line 142
;142:	cgs.fDisable = atoi( Info_ValueForKey( info, "fdisable" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $229
ARGP4
ADDRLP4 48
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 48
INDIRP4
ARGP4
ADDRLP4 52
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+33004
ADDRLP4 52
INDIRI4
ASGNI4
line 143
;143:	cgs.dmflags = atoi( Info_ValueForKey( info, "dmflags" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $231
ARGP4
ADDRLP4 56
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 56
INDIRP4
ARGP4
ADDRLP4 60
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32964
ADDRLP4 60
INDIRI4
ASGNI4
line 144
;144:	cgs.teamflags = atoi( Info_ValueForKey( info, "teamflags" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $233
ARGP4
ADDRLP4 64
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 64
INDIRP4
ARGP4
ADDRLP4 68
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32968
ADDRLP4 68
INDIRI4
ASGNI4
line 145
;145:	cgs.fraglimit = atoi( Info_ValueForKey( info, "fraglimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $235
ARGP4
ADDRLP4 72
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 72
INDIRP4
ARGP4
ADDRLP4 76
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32972
ADDRLP4 76
INDIRI4
ASGNI4
line 146
;146:	cgs.duel_fraglimit = atoi( Info_ValueForKey( info, "duel_fraglimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $237
ARGP4
ADDRLP4 80
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 80
INDIRP4
ARGP4
ADDRLP4 84
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32976
ADDRLP4 84
INDIRI4
ASGNI4
line 147
;147:	cgs.capturelimit = atoi( Info_ValueForKey( info, "capturelimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $239
ARGP4
ADDRLP4 88
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 88
INDIRP4
ARGP4
ADDRLP4 92
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32980
ADDRLP4 92
INDIRI4
ASGNI4
line 148
;148:	cgs.timelimit = atoi( Info_ValueForKey( info, "timelimit" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $241
ARGP4
ADDRLP4 96
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 96
INDIRP4
ARGP4
ADDRLP4 100
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32984
ADDRLP4 100
INDIRI4
ASGNI4
line 149
;149:	cgs.maxclients = atoi( Info_ValueForKey( info, "sv_maxclients" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $243
ARGP4
ADDRLP4 104
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 104
INDIRP4
ARGP4
ADDRLP4 108
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+32988
ADDRLP4 108
INDIRI4
ASGNI4
line 150
;150:	mapname = Info_ValueForKey( info, "mapname" );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $244
ARGP4
ADDRLP4 112
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 112
INDIRP4
ASGNP4
line 154
;151:
;152:
;153:	//rww - You must do this one here, Info_ValueForKey always uses the same memory pointer.
;154:	trap_Cvar_Set ( "ui_about_mapname", mapname );
ADDRGP4 $245
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 156
;155:
;156:	Com_sprintf( cgs.mapname, sizeof( cgs.mapname ), "maps/%s.bsp", mapname );
ADDRGP4 cgs+33008
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $248
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 157
;157:	Q_strncpyz( cgs.redTeam, Info_ValueForKey( info, "g_redTeam" ), sizeof(cgs.redTeam) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $250
ARGP4
ADDRLP4 116
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 cgs+33072
ARGP4
ADDRLP4 116
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 158
;158:	trap_Cvar_Set("g_redTeam", cgs.redTeam);
ADDRGP4 $250
ARGP4
ADDRGP4 cgs+33072
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 159
;159:	Q_strncpyz( cgs.blueTeam, Info_ValueForKey( info, "g_blueTeam" ), sizeof(cgs.blueTeam) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $254
ARGP4
ADDRLP4 120
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 cgs+33136
ARGP4
ADDRLP4 120
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 160
;160:	trap_Cvar_Set("g_blueTeam", cgs.blueTeam);
ADDRGP4 $254
ARGP4
ADDRGP4 cgs+33136
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 162
;161:
;162:	trap_Cvar_Set ( "ui_about_gametype", va("%i", cgs.gametype ) );
ADDRGP4 $220
ARGP4
ADDRGP4 cgs+32960
INDIRI4
ARGI4
ADDRLP4 124
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $257
ARGP4
ADDRLP4 124
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 163
;163:	trap_Cvar_Set ( "ui_about_fraglimit", va("%i", cgs.fraglimit ) );
ADDRGP4 $220
ARGP4
ADDRGP4 cgs+32972
INDIRI4
ARGI4
ADDRLP4 128
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $259
ARGP4
ADDRLP4 128
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 164
;164:	trap_Cvar_Set ( "ui_about_duellimit", va("%i", cgs.duel_fraglimit ) );
ADDRGP4 $220
ARGP4
ADDRGP4 cgs+32976
INDIRI4
ARGI4
ADDRLP4 132
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $261
ARGP4
ADDRLP4 132
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 165
;165:	trap_Cvar_Set ( "ui_about_capturelimit", va("%i", cgs.capturelimit ) );
ADDRGP4 $220
ARGP4
ADDRGP4 cgs+32980
INDIRI4
ARGI4
ADDRLP4 136
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $263
ARGP4
ADDRLP4 136
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 166
;166:	trap_Cvar_Set ( "ui_about_timelimit", va("%i", cgs.timelimit ) );
ADDRGP4 $220
ARGP4
ADDRGP4 cgs+32984
INDIRI4
ARGI4
ADDRLP4 140
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $265
ARGP4
ADDRLP4 140
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 167
;167:	trap_Cvar_Set ( "ui_about_maxclients", va("%i", cgs.maxclients ) );
ADDRGP4 $220
ARGP4
ADDRGP4 cgs+32988
INDIRI4
ARGI4
ADDRLP4 144
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $267
ARGP4
ADDRLP4 144
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 168
;168:	trap_Cvar_Set ( "ui_about_dmflags", va("%i", cgs.dmflags ) );
ADDRGP4 $220
ARGP4
ADDRGP4 cgs+32964
INDIRI4
ARGI4
ADDRLP4 148
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $269
ARGP4
ADDRLP4 148
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 169
;169:	trap_Cvar_Set ( "ui_about_hostname", Info_ValueForKey( info, "sv_hostname" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $272
ARGP4
ADDRLP4 152
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 $271
ARGP4
ADDRLP4 152
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 170
;170:	trap_Cvar_Set ( "ui_about_needpass", Info_ValueForKey( info, "g_needpass" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $274
ARGP4
ADDRLP4 156
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 $273
ARGP4
ADDRLP4 156
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 171
;171:	trap_Cvar_Set ( "ui_about_botminplayers", Info_ValueForKey ( info, "bot_minplayers" ) );
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $276
ARGP4
ADDRLP4 160
ADDRGP4 Info_ValueForKey
CALLP4
ASGNP4
ADDRGP4 $275
ARGP4
ADDRLP4 160
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 172
;172:}
LABELV $217
endproc CG_ParseServerinfo 164 16
proc CG_ParseWarmup 16 4
line 179
;173:
;174:/*
;175:==================
;176:CG_ParseWarmup
;177:==================
;178:*/
;179:static void CG_ParseWarmup( void ) {
line 183
;180:	const char	*info;
;181:	int			warmup;
;182:
;183:	info = CG_ConfigString( CS_WARMUP );
CNSTI4 5
ARGI4
ADDRLP4 8
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 8
INDIRP4
ASGNP4
line 185
;184:
;185:	warmup = atoi( info );
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 12
INDIRI4
ASGNI4
line 186
;186:	cg.warmupCount = -1;
ADDRGP4 cg+13356
CNSTI4 -1
ASGNI4
line 188
;187:
;188:	cg.warmup = warmup;
ADDRGP4 cg+13352
ADDRLP4 4
INDIRI4
ASGNI4
line 189
;189:}
LABELV $277
endproc CG_ParseWarmup 16 4
export CG_SetConfigValues
proc CG_SetConfigValues 148 4
line 199
;190:
;191:/*
;192:================
;193:CG_SetConfigValues
;194:
;195:Called on load to set the initial values from configure strings
;196:================
;197:*/
;198:void CG_SetConfigValues( void ) 
;199:{
line 203
;200:	const char *s;
;201:	const char *str;
;202:
;203:	cgs.scores1 = atoi( CG_ConfigString( CS_SCORES1 ) );
CNSTI4 6
ARGI4
ADDRLP4 8
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36324
ADDRLP4 12
INDIRI4
ASGNI4
line 204
;204:	cgs.scores2 = atoi( CG_ConfigString( CS_SCORES2 ) );
CNSTI4 7
ARGI4
ADDRLP4 16
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36328
ADDRLP4 20
INDIRI4
ASGNI4
line 205
;205:	cgs.levelStartTime = atoi( CG_ConfigString( CS_LEVEL_START_TIME ) );
CNSTI4 21
ARGI4
ADDRLP4 24
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36320
ADDRLP4 28
INDIRI4
ASGNI4
line 206
;206:	if( cgs.gametype == GT_CTF || cgs.gametype == GT_CTY ) {
ADDRGP4 cgs+32960
INDIRI4
CNSTI4 7
EQI4 $288
ADDRGP4 cgs+32960
INDIRI4
CNSTI4 8
NEI4 $284
LABELV $288
line 207
;207:		s = CG_ConfigString( CS_FLAGSTATUS );
CNSTI4 23
ARGI4
ADDRLP4 32
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 32
INDIRP4
ASGNP4
line 208
;208:		cgs.redflag = s[0] - '0';
ADDRGP4 cgs+36348
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 209
;209:		cgs.blueflag = s[1] - '0';
ADDRGP4 cgs+36352
ADDRLP4 4
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 210
;210:	}
LABELV $284
line 211
;211:	cg.warmup = atoi( CG_ConfigString( CS_WARMUP ) );
CNSTI4 5
ARGI4
ADDRLP4 32
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 32
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+13352
ADDRLP4 36
INDIRI4
ASGNI4
line 214
;212:
;213:	// Track who the jedi master is
;214:	cgs.jediMaster = atoi ( CG_ConfigString ( CS_CLIENT_JEDIMASTER ) );
CNSTI4 28
ARGI4
ADDRLP4 40
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36332
ADDRLP4 44
INDIRI4
ASGNI4
line 215
;215:	cgs.duelWinner = atoi ( CG_ConfigString ( CS_CLIENT_DUELWINNER ) );
CNSTI4 29
ARGI4
ADDRLP4 48
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 48
INDIRP4
ARGP4
ADDRLP4 52
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36336
ADDRLP4 52
INDIRI4
ASGNI4
line 217
;216:
;217:	str = CG_ConfigString(CS_CLIENT_DUELISTS);
CNSTI4 30
ARGI4
ADDRLP4 56
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 56
INDIRP4
ASGNP4
line 219
;218:
;219:	if (str && str[0])
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $294
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $294
line 220
;220:	{
line 222
;221:		char buf[64];
;222:		int c = 0;
ADDRLP4 68
CNSTI4 0
ASGNI4
line 223
;223:		int i = 0;
ADDRLP4 64
CNSTI4 0
ASGNI4
ADDRGP4 $297
JUMPV
LABELV $296
line 226
;224:
;225:		while (str[i] && str[i] != '|')
;226:		{
line 227
;227:			buf[c] = str[i];
ADDRLP4 68
INDIRI4
ADDRLP4 72
ADDP4
ADDRLP4 64
INDIRI4
ADDRLP4 0
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 228
;228:			c++;
ADDRLP4 68
ADDRLP4 68
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 229
;229:			i++;
ADDRLP4 64
ADDRLP4 64
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 230
;230:		}
LABELV $297
line 225
ADDRLP4 136
ADDRLP4 64
INDIRI4
ADDRLP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 136
INDIRI4
CNSTI4 0
EQI4 $299
ADDRLP4 136
INDIRI4
CNSTI4 124
NEI4 $296
LABELV $299
line 231
;231:		buf[c] = 0;
ADDRLP4 68
INDIRI4
ADDRLP4 72
ADDP4
CNSTI1 0
ASGNI1
line 233
;232:
;233:		cgs.duelist1 = atoi ( buf );
ADDRLP4 72
ARGP4
ADDRLP4 140
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36340
ADDRLP4 140
INDIRI4
ASGNI4
line 234
;234:		c = 0;
ADDRLP4 68
CNSTI4 0
ASGNI4
line 236
;235:
;236:		i++;
ADDRLP4 64
ADDRLP4 64
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $302
JUMPV
LABELV $301
line 238
;237:		while (str[i])
;238:		{
line 239
;239:			buf[c] = str[i];
ADDRLP4 68
INDIRI4
ADDRLP4 72
ADDP4
ADDRLP4 64
INDIRI4
ADDRLP4 0
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 240
;240:			c++;
ADDRLP4 68
ADDRLP4 68
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 241
;241:			i++;
ADDRLP4 64
ADDRLP4 64
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 242
;242:		}
LABELV $302
line 237
ADDRLP4 64
INDIRI4
ADDRLP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $301
line 243
;243:		buf[c] = 0;
ADDRLP4 68
INDIRI4
ADDRLP4 72
ADDP4
CNSTI1 0
ASGNI1
line 245
;244:
;245:		cgs.duelist2 = atoi ( buf );
ADDRLP4 72
ARGP4
ADDRLP4 144
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36344
ADDRLP4 144
INDIRI4
ASGNI4
line 246
;246:	}
LABELV $294
line 247
;247:}
LABELV $280
endproc CG_SetConfigValues 148 4
export CG_ShaderStateChanged
proc CG_ShaderStateChanged 188 12
line 254
;248:
;249:/*
;250:=====================
;251:CG_ShaderStateChanged
;252:=====================
;253:*/
;254:void CG_ShaderStateChanged(void) {
line 261
;255:	char originalShader[MAX_QPATH];
;256:	char newShader[MAX_QPATH];
;257:	char timeOffset[16];
;258:	const char *o;
;259:	char *n,*t;
;260:
;261:	o = CG_ConfigString( CS_SHADERSTATE );
CNSTI4 24
ARGI4
ADDRLP4 156
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 156
INDIRP4
ASGNP4
ADDRGP4 $307
JUMPV
LABELV $306
line 262
;262:	while (o && *o) {
line 263
;263:		n = strstr(o, "=");
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $309
ARGP4
ADDRLP4 160
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 160
INDIRP4
ASGNP4
line 264
;264:		if (n && *n) {
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $308
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $308
line 265
;265:			strncpy(originalShader, o, n-o);
ADDRLP4 12
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRLP4 0
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ARGI4
ADDRGP4 strncpy
CALLP4
pop
line 266
;266:			originalShader[n-o] = 0;
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRLP4 0
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ADDRLP4 12
ADDP4
CNSTI1 0
ASGNI1
line 267
;267:			n++;
ADDRLP4 4
ADDRLP4 4
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 268
;268:			t = strstr(n, ":");
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 $312
ARGP4
ADDRLP4 172
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 172
INDIRP4
ASGNP4
line 269
;269:			if (t && *t) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $308
ADDRLP4 8
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $308
line 270
;270:				strncpy(newShader, n, t-n);
ADDRLP4 76
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ARGI4
ADDRGP4 strncpy
CALLP4
pop
line 271
;271:				newShader[t-n] = 0;
ADDRLP4 8
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ADDRLP4 76
ADDP4
CNSTI1 0
ASGNI1
line 272
;272:			} else {
line 273
;273:				break;
LABELV $314
line 275
;274:			}
;275:			t++;
ADDRLP4 8
ADDRLP4 8
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 276
;276:			o = strstr(t, "@");
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 $315
ARGP4
ADDRLP4 180
ADDRGP4 strstr
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 180
INDIRP4
ASGNP4
line 277
;277:			if (o) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $311
line 278
;278:				strncpy(timeOffset, t, o-t);
ADDRLP4 140
ARGP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ARGI4
ADDRGP4 strncpy
CALLP4
pop
line 279
;279:				timeOffset[o-t] = 0;
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
ADDRLP4 140
ADDP4
CNSTI1 0
ASGNI1
line 280
;280:				o++;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 281
;281:				trap_R_RemapShader( originalShader, newShader, timeOffset );
ADDRLP4 12
ARGP4
ADDRLP4 76
ARGP4
ADDRLP4 140
ARGP4
ADDRGP4 trap_R_RemapShader
CALLV
pop
line 282
;282:			}
line 283
;283:		} else {
line 284
;284:			break;
LABELV $311
line 286
;285:		}
;286:	}
LABELV $307
line 262
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $318
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $306
LABELV $318
LABELV $308
line 287
;287:}
LABELV $305
endproc CG_ShaderStateChanged 188 12
proc CG_ConfigStringModified 104 12
line 295
;288:
;289:/*
;290:================
;291:CG_ConfigStringModified
;292:
;293:================
;294:*/
;295:static void CG_ConfigStringModified( void ) {
line 299
;296:	const char	*str;
;297:	int		num;
;298:
;299:	num = atoi( CG_Argv( 1 ) );
CNSTI4 1
ARGI4
ADDRLP4 8
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 12
INDIRI4
ASGNI4
line 303
;300:
;301:	// get the gamestate from the client system, which will have the
;302:	// new configstring already integrated
;303:	trap_GetGameState( &cgs.gameState );
ADDRGP4 cgs
ARGP4
ADDRGP4 trap_GetGameState
CALLV
pop
line 306
;304:
;305:	// look up the individual string that was modified
;306:	str = CG_ConfigString( num );
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 16
ADDRGP4 CG_ConfigString
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 16
INDIRP4
ASGNP4
line 309
;307:
;308:	// do something with it if necessary
;309:	if ( num == CS_MUSIC ) {
ADDRLP4 0
INDIRI4
CNSTI4 2
NEI4 $320
line 310
;310:		CG_StartMusic( qtrue );
CNSTI4 1
ARGI4
ADDRGP4 CG_StartMusic
CALLV
pop
line 311
;311:	} else if ( num == CS_SERVERINFO ) {
ADDRGP4 $321
JUMPV
LABELV $320
ADDRLP4 0
INDIRI4
CNSTI4 0
NEI4 $322
line 312
;312:		CG_ParseServerinfo();
ADDRGP4 CG_ParseServerinfo
CALLV
pop
line 313
;313:	} else if ( num == CS_WARMUP ) {
ADDRGP4 $323
JUMPV
LABELV $322
ADDRLP4 0
INDIRI4
CNSTI4 5
NEI4 $324
line 314
;314:		CG_ParseWarmup();
ADDRGP4 CG_ParseWarmup
CALLV
pop
line 315
;315:	} else if ( num == CS_SCORES1 ) {
ADDRGP4 $325
JUMPV
LABELV $324
ADDRLP4 0
INDIRI4
CNSTI4 6
NEI4 $326
line 316
;316:		cgs.scores1 = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36324
ADDRLP4 20
INDIRI4
ASGNI4
line 317
;317:	} else if ( num == CS_SCORES2 ) {
ADDRGP4 $327
JUMPV
LABELV $326
ADDRLP4 0
INDIRI4
CNSTI4 7
NEI4 $329
line 318
;318:		cgs.scores2 = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36328
ADDRLP4 20
INDIRI4
ASGNI4
line 319
;319:	} else if ( num == CS_CLIENT_JEDIMASTER ) {
ADDRGP4 $330
JUMPV
LABELV $329
ADDRLP4 0
INDIRI4
CNSTI4 28
NEI4 $332
line 320
;320:		cgs.jediMaster = atoi ( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36332
ADDRLP4 20
INDIRI4
ASGNI4
line 321
;321:	} else if ( num == CS_CLIENT_DUELWINNER ) {
ADDRGP4 $333
JUMPV
LABELV $332
ADDRLP4 0
INDIRI4
CNSTI4 29
NEI4 $335
line 322
;322:		cgs.duelWinner = atoi ( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36336
ADDRLP4 20
INDIRI4
ASGNI4
line 323
;323:	} else if ( num == CS_CLIENT_DUELISTS ) {
ADDRGP4 $336
JUMPV
LABELV $335
ADDRLP4 0
INDIRI4
CNSTI4 30
NEI4 $338
line 325
;324:		char buf[64];
;325:		int c = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
line 326
;326:		int i = 0;
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRGP4 $341
JUMPV
LABELV $340
line 329
;327:
;328:		while (str[i] && str[i] != '|')
;329:		{
line 330
;330:			buf[c] = str[i];
ADDRLP4 24
INDIRI4
ADDRLP4 28
ADDP4
ADDRLP4 20
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 331
;331:			c++;
ADDRLP4 24
ADDRLP4 24
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 332
;332:			i++;
ADDRLP4 20
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 333
;333:		}
LABELV $341
line 328
ADDRLP4 92
ADDRLP4 20
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 92
INDIRI4
CNSTI4 0
EQI4 $343
ADDRLP4 92
INDIRI4
CNSTI4 124
NEI4 $340
LABELV $343
line 334
;334:		buf[c] = 0;
ADDRLP4 24
INDIRI4
ADDRLP4 28
ADDP4
CNSTI1 0
ASGNI1
line 336
;335:
;336:		cgs.duelist1 = atoi ( buf );
ADDRLP4 28
ARGP4
ADDRLP4 96
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36340
ADDRLP4 96
INDIRI4
ASGNI4
line 337
;337:		c = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
line 339
;338:
;339:		i++;
ADDRLP4 20
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRGP4 $346
JUMPV
LABELV $345
line 341
;340:		while (str[i])
;341:		{
line 342
;342:			buf[c] = str[i];
ADDRLP4 24
INDIRI4
ADDRLP4 28
ADDP4
ADDRLP4 20
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 343
;343:			c++;
ADDRLP4 24
ADDRLP4 24
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 344
;344:			i++;
ADDRLP4 20
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 345
;345:		}
LABELV $346
line 340
ADDRLP4 20
INDIRI4
ADDRLP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $345
line 346
;346:		buf[c] = 0;
ADDRLP4 24
INDIRI4
ADDRLP4 28
ADDP4
CNSTI1 0
ASGNI1
line 348
;347:
;348:		cgs.duelist2 = atoi ( buf );
ADDRLP4 28
ARGP4
ADDRLP4 100
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36344
ADDRLP4 100
INDIRI4
ASGNI4
line 349
;349:	} else if ( num == CS_LEVEL_START_TIME ) {
ADDRGP4 $339
JUMPV
LABELV $338
ADDRLP4 0
INDIRI4
CNSTI4 21
NEI4 $349
line 350
;350:		cgs.levelStartTime = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+36320
ADDRLP4 20
INDIRI4
ASGNI4
line 351
;351:	} else if ( num == CS_VOTE_TIME ) {
ADDRGP4 $350
JUMPV
LABELV $349
ADDRLP4 0
INDIRI4
CNSTI4 8
NEI4 $352
line 352
;352:		cgs.voteTime = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+33200
ADDRLP4 20
INDIRI4
ASGNI4
line 353
;353:		cgs.voteModified = qtrue;
ADDRGP4 cgs+33212
CNSTI4 1
ASGNI4
line 354
;354:	} else if ( num == CS_VOTE_YES ) {
ADDRGP4 $353
JUMPV
LABELV $352
ADDRLP4 0
INDIRI4
CNSTI4 10
NEI4 $356
line 355
;355:		cgs.voteYes = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+33204
ADDRLP4 20
INDIRI4
ASGNI4
line 356
;356:		cgs.voteModified = qtrue;
ADDRGP4 cgs+33212
CNSTI4 1
ASGNI4
line 357
;357:	} else if ( num == CS_VOTE_NO ) {
ADDRGP4 $357
JUMPV
LABELV $356
ADDRLP4 0
INDIRI4
CNSTI4 11
NEI4 $360
line 358
;358:		cgs.voteNo = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cgs+33208
ADDRLP4 20
INDIRI4
ASGNI4
line 359
;359:		cgs.voteModified = qtrue;
ADDRGP4 cgs+33212
CNSTI4 1
ASGNI4
line 360
;360:	} else if ( num == CS_VOTE_STRING ) {
ADDRGP4 $361
JUMPV
LABELV $360
ADDRLP4 0
INDIRI4
CNSTI4 9
NEI4 $364
line 361
;361:		Q_strncpyz( cgs.voteString, str, sizeof( cgs.voteString ) );
ADDRGP4 cgs+33216
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 362
;362:	} else if ( num >= CS_TEAMVOTE_TIME && num <= CS_TEAMVOTE_TIME + 1) {
ADDRGP4 $365
JUMPV
LABELV $364
ADDRLP4 0
INDIRI4
CNSTI4 12
LTI4 $368
ADDRLP4 0
INDIRI4
CNSTI4 13
GTI4 $368
line 363
;363:		cgs.teamVoteTime[num-CS_TEAMVOTE_TIME] = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 24
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34240-48
ADDP4
ADDRLP4 24
INDIRI4
ASGNI4
line 364
;364:		cgs.teamVoteModified[num-CS_TEAMVOTE_TIME] = qtrue;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34264-48
ADDP4
CNSTI4 1
ASGNI4
line 365
;365:	} else if ( num >= CS_TEAMVOTE_YES && num <= CS_TEAMVOTE_YES + 1) {
ADDRGP4 $369
JUMPV
LABELV $368
ADDRLP4 0
INDIRI4
CNSTI4 16
LTI4 $374
ADDRLP4 0
INDIRI4
CNSTI4 17
GTI4 $374
line 366
;366:		cgs.teamVoteYes[num-CS_TEAMVOTE_YES] = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34248-64
ADDP4
ADDRLP4 28
INDIRI4
ASGNI4
line 367
;367:		cgs.teamVoteModified[num-CS_TEAMVOTE_YES] = qtrue;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34264-64
ADDP4
CNSTI4 1
ASGNI4
line 368
;368:	} else if ( num >= CS_TEAMVOTE_NO && num <= CS_TEAMVOTE_NO + 1) {
ADDRGP4 $375
JUMPV
LABELV $374
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $380
ADDRLP4 0
INDIRI4
CNSTI4 19
GTI4 $380
line 369
;369:		cgs.teamVoteNo[num-CS_TEAMVOTE_NO] = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 32
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34256-72
ADDP4
ADDRLP4 32
INDIRI4
ASGNI4
line 370
;370:		cgs.teamVoteModified[num-CS_TEAMVOTE_NO] = qtrue;
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+34264-72
ADDP4
CNSTI4 1
ASGNI4
line 371
;371:	} else if ( num >= CS_TEAMVOTE_STRING && num <= CS_TEAMVOTE_STRING + 1) {
ADDRGP4 $381
JUMPV
LABELV $380
ADDRLP4 0
INDIRI4
CNSTI4 14
LTI4 $386
ADDRLP4 0
INDIRI4
CNSTI4 15
GTI4 $386
line 372
;372:		Q_strncpyz( cgs.teamVoteString[num-CS_TEAMVOTE_STRING], str, sizeof( cgs.teamVoteString ) );
ADDRLP4 0
INDIRI4
CNSTI4 10
LSHI4
ADDRGP4 cgs+34272-14336
ADDP4
ARGP4
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 2048
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 373
;373:	} else if ( num == CS_INTERMISSION ) {
ADDRGP4 $387
JUMPV
LABELV $386
ADDRLP4 0
INDIRI4
CNSTI4 22
NEI4 $391
line 374
;374:		cg.intermissionStarted = atoi( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRGP4 cg+24
ADDRLP4 36
INDIRI4
ASGNI4
line 375
;375:	} else if ( num >= CS_MODELS && num < CS_MODELS+MAX_MODELS ) {
ADDRGP4 $392
JUMPV
LABELV $391
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $394
ADDRLP4 0
INDIRI4
CNSTI4 288
GEI4 $394
line 376
;376:		cgs.gameModels[ num-CS_MODELS ] = trap_R_RegisterModel( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 40
ADDRGP4 trap_R_RegisterModel
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+36364-128
ADDP4
ADDRLP4 40
INDIRI4
ASGNI4
line 378
;377:// GHOUL2 Insert start
;378:	} else if ( num >= CS_CHARSKINS && num < CS_CHARSKINS+MAX_CHARSKINS ) {
ADDRGP4 $395
JUMPV
LABELV $394
ADDRLP4 0
INDIRI4
CNSTI4 576
LTI4 $398
ADDRLP4 0
INDIRI4
CNSTI4 640
GEI4 $398
line 379
;379:		cgs.skins[ num-CS_CHARSKINS ] = trap_R_RegisterSkin( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 trap_R_RegisterSkin
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+38668-2304
ADDP4
ADDRLP4 44
INDIRI4
ASGNI4
line 381
;380:// Ghoul2 Insert end
;381:	} else if ( num >= CS_SOUNDS && num < CS_SOUNDS+MAX_SOUNDS ) {
ADDRGP4 $399
JUMPV
LABELV $398
ADDRLP4 0
INDIRI4
CNSTI4 288
LTI4 $402
ADDRLP4 0
INDIRI4
CNSTI4 544
GEI4 $402
line 382
;382:		if ( str[0] != '*' ) {	// player specific sounds don't register here
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 42
EQI4 $403
line 383
;383:			cgs.gameSounds[ num-CS_SOUNDS] = trap_S_RegisterSound( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 48
ADDRGP4 trap_S_RegisterSound
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+37388-1152
ADDP4
ADDRLP4 48
INDIRI4
ASGNI4
line 384
;384:		}
line 385
;385:	} else if ( num >= CS_EFFECTS && num < CS_SOUNDS+MAX_SOUNDS ) {
ADDRGP4 $403
JUMPV
LABELV $402
ADDRLP4 0
INDIRI4
CNSTI4 768
LTI4 $408
ADDRLP4 0
INDIRI4
CNSTI4 544
GEI4 $408
line 386
;386:		if ( str[0] != '*' ) {	// player specific sounds don't register here
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 42
EQI4 $409
line 387
;387:			cgs.gameEffects[ num-CS_EFFECTS] = trap_FX_RegisterEffect( str );
ADDRLP4 4
INDIRP4
ARGP4
ADDRLP4 52
ADDRGP4 trap_FX_RegisterEffect
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+38412-3072
ADDP4
ADDRLP4 52
INDIRI4
ASGNI4
line 388
;388:		}
line 389
;389:	} else if ( num >= CS_PLAYERS && num < CS_PLAYERS+MAX_CLIENTS ) {
ADDRGP4 $409
JUMPV
LABELV $408
ADDRLP4 0
INDIRI4
CNSTI4 544
LTI4 $414
ADDRLP4 0
INDIRI4
CNSTI4 576
GEI4 $414
line 390
;390:		CG_NewClientInfo( num - CS_PLAYERS, qtrue);
ADDRLP4 0
INDIRI4
CNSTI4 544
SUBI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 CG_NewClientInfo
CALLV
pop
line 391
;391:		CG_BuildSpectatorString();
ADDRGP4 CG_BuildSpectatorString
CALLV
pop
line 392
;392:	} else if ( num == CS_FLAGSTATUS ) {
ADDRGP4 $415
JUMPV
LABELV $414
ADDRLP4 0
INDIRI4
CNSTI4 23
NEI4 $416
line 393
;393:		if( cgs.gametype == GT_CTF || cgs.gametype == GT_CTY ) {
ADDRGP4 cgs+32960
INDIRI4
CNSTI4 7
EQI4 $422
ADDRGP4 cgs+32960
INDIRI4
CNSTI4 8
NEI4 $417
LABELV $422
line 395
;394:			// format is rb where its red/blue, 0 is at base, 1 is taken, 2 is dropped
;395:			cgs.redflag = str[0] - '0';
ADDRGP4 cgs+36348
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 396
;396:			cgs.blueflag = str[1] - '0';
ADDRGP4 cgs+36352
ADDRLP4 4
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
CNSTI4 48
SUBI4
ASGNI4
line 397
;397:		}
line 398
;398:	}
ADDRGP4 $417
JUMPV
LABELV $416
line 399
;399:	else if ( num == CS_SHADERSTATE ) {
ADDRLP4 0
INDIRI4
CNSTI4 24
NEI4 $425
line 400
;400:		CG_ShaderStateChanged();
ADDRGP4 CG_ShaderStateChanged
CALLV
pop
line 401
;401:	}
ADDRGP4 $426
JUMPV
LABELV $425
line 402
;402:	else if ( num >= CS_LIGHT_STYLES && num < CS_LIGHT_STYLES + (MAX_LIGHT_STYLES * 3))
ADDRLP4 0
INDIRI4
CNSTI4 832
LTI4 $427
ADDRLP4 0
INDIRI4
CNSTI4 1024
GEI4 $427
line 403
;403:	{
line 404
;404:		CG_SetLightstyle(num - CS_LIGHT_STYLES);
ADDRLP4 0
INDIRI4
CNSTI4 832
SUBI4
ARGI4
ADDRGP4 CG_SetLightstyle
CALLV
pop
line 405
;405:	}
LABELV $427
LABELV $426
LABELV $417
LABELV $415
LABELV $409
LABELV $403
LABELV $399
LABELV $395
LABELV $392
LABELV $387
LABELV $381
LABELV $375
LABELV $369
LABELV $365
LABELV $361
LABELV $357
LABELV $353
LABELV $350
LABELV $339
LABELV $336
LABELV $333
LABELV $330
LABELV $327
LABELV $325
LABELV $323
LABELV $321
line 407
;406:		
;407:}
LABELV $319
endproc CG_ConfigStringModified 104 12
proc CG_AddToTeamChat 60 0
line 416
;408:
;409:
;410:/*
;411:=======================
;412:CG_AddToTeamChat
;413:
;414:=======================
;415:*/
;416:static void CG_AddToTeamChat( const char *str ) {
line 422
;417:	int len;
;418:	char *p, *ls;
;419:	int lastcolor;
;420:	int chatHeight;
;421:
;422:	if (cg_teamChatHeight.integer < TEAMCHAT_HEIGHT) {
ADDRGP4 cg_teamChatHeight+12
INDIRI4
CNSTI4 8
GEI4 $430
line 423
;423:		chatHeight = cg_teamChatHeight.integer;
ADDRLP4 12
ADDRGP4 cg_teamChatHeight+12
INDIRI4
ASGNI4
line 424
;424:	} else {
ADDRGP4 $431
JUMPV
LABELV $430
line 425
;425:		chatHeight = TEAMCHAT_HEIGHT;
ADDRLP4 12
CNSTI4 8
ASGNI4
line 426
;426:	}
LABELV $431
line 428
;427:
;428:	if (chatHeight <= 0 || cg_teamChatTime.integer <= 0) {
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 12
INDIRI4
ADDRLP4 20
INDIRI4
LEI4 $437
ADDRGP4 cg_teamChatTime+12
INDIRI4
ADDRLP4 20
INDIRI4
GTI4 $434
LABELV $437
line 430
;429:		// team chat disabled, dump into normal chat
;430:		cgs.teamChatPos = cgs.teamLastChatPos = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
ADDRGP4 cgs+70204
ADDRLP4 24
INDIRI4
ASGNI4
ADDRGP4 cgs+70200
ADDRLP4 24
INDIRI4
ASGNI4
line 431
;431:		return;
ADDRGP4 $429
JUMPV
LABELV $434
line 434
;432:	}
;433:
;434:	len = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 436
;435:
;436:	p = cgs.teamChatMsgs[cgs.teamChatPos % chatHeight];
ADDRLP4 0
CNSTI4 241
ADDRGP4 cgs+70200
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
MULI4
ADDRGP4 cgs+68240
ADDP4
ASGNP4
line 437
;437:	*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 439
;438:
;439:	lastcolor = '7';
ADDRLP4 16
CNSTI4 55
ASGNI4
line 441
;440:
;441:	ls = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
ADDRGP4 $443
JUMPV
LABELV $442
line 442
;442:	while (*str) {
line 443
;443:		if (len > TEAMCHAT_WIDTH - 1) {
ADDRLP4 4
INDIRI4
CNSTI4 79
LEI4 $445
line 444
;444:			if (ls) {
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $447
line 445
;445:				str -= (p - ls);
ADDRFP4 0
ADDRFP4 0
INDIRP4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
SUBP4
ASGNP4
line 446
;446:				str++;
ADDRFP4 0
ADDRFP4 0
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
line 447
;447:				p -= (p - ls);
ADDRLP4 0
ADDRLP4 0
INDIRP4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRP4
CVPU4 4
SUBU4
CVUI4 4
SUBP4
ASGNP4
line 448
;448:			}
LABELV $447
line 449
;449:			*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 451
;450:
;451:			cgs.teamChatMsgTimes[cgs.teamChatPos % chatHeight] = cg.time;
ADDRGP4 cgs+70200
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+70168
ADDP4
ADDRGP4 cg+64
INDIRI4
ASGNI4
line 453
;452:
;453:			cgs.teamChatPos++;
ADDRLP4 24
ADDRGP4 cgs+70200
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 454
;454:			p = cgs.teamChatMsgs[cgs.teamChatPos % chatHeight];
ADDRLP4 0
CNSTI4 241
ADDRGP4 cgs+70200
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
MULI4
ADDRGP4 cgs+68240
ADDP4
ASGNP4
line 455
;455:			*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 456
;456:			*p++ = Q_COLOR_ESCAPE;
ADDRLP4 28
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 28
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 28
INDIRP4
CNSTI1 94
ASGNI1
line 457
;457:			*p++ = lastcolor;
ADDRLP4 32
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 32
INDIRP4
CNSTI4 1
ADDP4
ASGNP4
ADDRLP4 32
INDIRP4
ADDRLP4 16
INDIRI4
CVII1 4
ASGNI1
line 458
;458:			len = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 459
;459:			ls = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
line 460
;460:		}
LABELV $445
line 462
;461:
;462:		if ( Q_IsColorString( str ) ) {
ADDRLP4 24
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 24
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $455
ADDRLP4 28
CNSTI4 94
ASGNI4
ADDRLP4 24
INDIRP4
INDIRI1
CVII4 1
ADDRLP4 28
INDIRI4
NEI4 $455
ADDRLP4 32
ADDRLP4 24
INDIRP4
CNSTI4 1
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 0
EQI4 $455
ADDRLP4 32
INDIRI4
ADDRLP4 28
INDIRI4
EQI4 $455
ADDRLP4 32
INDIRI4
CNSTI4 55
GTI4 $455
ADDRLP4 32
INDIRI4
CNSTI4 48
LTI4 $455
line 463
;463:			*p++ = *str++;
ADDRLP4 36
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 44
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 36
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ASGNP4
ADDRLP4 40
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 40
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI1
ASGNI1
line 464
;464:			lastcolor = *str;
ADDRLP4 16
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
ASGNI4
line 465
;465:			*p++ = *str++;
ADDRLP4 48
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 56
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 48
INDIRP4
ADDRLP4 56
INDIRI4
ADDP4
ASGNP4
ADDRLP4 52
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 52
INDIRP4
ADDRLP4 56
INDIRI4
ADDP4
ASGNP4
ADDRLP4 48
INDIRP4
ADDRLP4 52
INDIRP4
INDIRI1
ASGNI1
line 466
;466:			continue;
ADDRGP4 $443
JUMPV
LABELV $455
line 468
;467:		}
;468:		if (*str == ' ') {
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 32
NEI4 $457
line 469
;469:			ls = p;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
line 470
;470:		}
LABELV $457
line 471
;471:		*p++ = *str++;
ADDRLP4 36
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 44
CNSTI4 1
ASGNI4
ADDRLP4 0
ADDRLP4 36
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ASGNP4
ADDRLP4 40
ADDRFP4 0
INDIRP4
ASGNP4
ADDRFP4 0
ADDRLP4 40
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI1
ASGNI1
line 472
;472:		len++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 473
;473:	}
LABELV $443
line 442
ADDRFP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $442
line 474
;474:	*p = 0;
ADDRLP4 0
INDIRP4
CNSTI1 0
ASGNI1
line 476
;475:
;476:	cgs.teamChatMsgTimes[cgs.teamChatPos % chatHeight] = cg.time;
ADDRGP4 cgs+70200
INDIRI4
ADDRLP4 12
INDIRI4
MODI4
CNSTI4 2
LSHI4
ADDRGP4 cgs+70168
ADDP4
ADDRGP4 cg+64
INDIRI4
ASGNI4
line 477
;477:	cgs.teamChatPos++;
ADDRLP4 24
ADDRGP4 cgs+70200
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 479
;478:
;479:	if (cgs.teamChatPos - cgs.teamLastChatPos > chatHeight)
ADDRGP4 cgs+70200
INDIRI4
ADDRGP4 cgs+70204
INDIRI4
SUBI4
ADDRLP4 12
INDIRI4
LEI4 $463
line 480
;480:		cgs.teamLastChatPos = cgs.teamChatPos - chatHeight;
ADDRGP4 cgs+70204
ADDRGP4 cgs+70200
INDIRI4
ADDRLP4 12
INDIRI4
SUBI4
ASGNI4
LABELV $463
line 481
;481:}
LABELV $429
endproc CG_AddToTeamChat 60 0
export CG_KillCEntityInstances
proc CG_KillCEntityInstances 12 4
line 486
;482:
;483:void CG_LoadClientInfo( clientInfo_t *ci );
;484:
;485:void CG_KillCEntityInstances()
;486:{
line 487
;487:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $471
JUMPV
LABELV $470
line 490
;488:
;489:	while (i < MAX_GENTITIES)
;490:	{
line 491
;491:		if (i >= MAX_CLIENTS)
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $473
line 492
;492:		{ //do not clear G2 instances on client ents, they are constant
line 493
;493:			if (cg_entities[i].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[i].ghoul2))
ADDRLP4 4
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 4
INDIRI4
ADDRGP4 cg_entities+952
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $475
ADDRLP4 4
INDIRI4
ADDRGP4 cg_entities+952
ADDP4
INDIRP4
ARGP4
ADDRLP4 8
ADDRGP4 trap_G2_HaveWeGhoul2Models
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $475
line 494
;494:			{
line 495
;495:				trap_G2API_CleanGhoul2Models(&(cg_entities[i].ghoul2));
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+952
ADDP4
ARGP4
ADDRGP4 trap_G2API_CleanGhoul2Models
CALLV
pop
line 496
;496:			}
LABELV $475
line 497
;497:		}
LABELV $473
line 518
;498:		/*
;499:		else
;500:		{ //we must do this, because otherwise after a map_restart it seems to return bad angles in matrices produced by GetBoltMatrix
;501:			if (cgs.clientinfo[i].ghoul2Model || cg_entities[i].ghoul2)
;502:			{
;503:				CG_LoadClientInfo(&cgs.clientinfo[i]);
;504:
;505:				if (cg_entities[i].ghoul2 != cgs.clientinfo[i].ghoul2Model)
;506:				{
;507:					if (cg_entities[i].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[i].ghoul2))
;508:					{
;509:						trap_G2API_CleanGhoul2Models(&(cg_entities[i].ghoul2));
;510:					}
;511:
;512:					trap_G2API_DuplicateGhoul2Instance(cgs.clientinfo[i].ghoul2Model, &cg_entities[i].ghoul2);
;513:				}
;514:			}
;515:		}
;516:		*/
;517:
;518:		cg_entities[i].isATST = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1028
ADDP4
CNSTI4 0
ASGNI4
line 519
;519:		cg_entities[i].atstFootClang = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1032
ADDP4
CNSTI4 0
ASGNI4
line 520
;520:		cg_entities[i].atstSwinging = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1036
ADDP4
CNSTI4 0
ASGNI4
line 521
;521:		cg_entities[i].bolt1 = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+984
ADDP4
CNSTI4 0
ASGNI4
line 522
;522:		cg_entities[i].bolt2 = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+988
ADDP4
CNSTI4 0
ASGNI4
line 523
;523:		cg_entities[i].bolt3 = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+992
ADDP4
CNSTI4 0
ASGNI4
line 524
;524:		cg_entities[i].bolt4 = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+996
ADDP4
CNSTI4 0
ASGNI4
line 526
;525:
;526:		cg_entities[i].saberLength = SABER_LENGTH_MAX;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1000
ADDP4
CNSTF4 1109393408
ASGNF4
line 527
;527:		cg_entities[i].saberExtendTime = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1004
ADDP4
CNSTI4 0
ASGNI4
line 529
;528:
;529:		cg_entities[i].boltInfo = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+980
ADDP4
CNSTI4 0
ASGNI4
line 531
;530:
;531:		cg_entities[i].frame_minus1_refreshed = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1464
ADDP4
CNSTI4 0
ASGNI4
line 532
;532:		cg_entities[i].frame_minus2_refreshed = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1468
ADDP4
CNSTI4 0
ASGNI4
line 533
;533:		cg_entities[i].dustTrailTime = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+616
ADDP4
CNSTI4 0
ASGNI4
line 534
;534:		cg_entities[i].ghoul2weapon = NULL;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+960
ADDP4
CNSTP4 0
ASGNP4
line 536
;535://		cg_entities[i].torsoBolt = 0;
;536:		cg_entities[i].trailTime = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+612
ADDP4
CNSTI4 0
ASGNI4
line 537
;537:		cg_entities[i].frame_hold_time = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1684
ADDP4
CNSTI4 0
ASGNI4
line 538
;538:		cg_entities[i].frame_hold_refreshed = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1688
ADDP4
CNSTI4 0
ASGNI4
line 539
;539:		cg_entities[i].trickAlpha = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1904
ADDP4
CNSTI4 0
ASGNI4
line 540
;540:		cg_entities[i].trickAlphaTime = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1908
ADDP4
CNSTI4 0
ASGNI4
line 541
;541:		VectorClear(cg_entities[i].turAngles);
ADDRLP4 4
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 8
CNSTF4 0
ASGNF4
ADDRLP4 4
INDIRI4
ADDRGP4 cg_entities+1016+8
ADDP4
ADDRLP4 8
INDIRF4
ASGNF4
ADDRLP4 4
INDIRI4
ADDRGP4 cg_entities+1016+4
ADDP4
ADDRLP4 8
INDIRF4
ASGNF4
ADDRLP4 4
INDIRI4
ADDRGP4 cg_entities+1016
ADDP4
ADDRLP4 8
INDIRF4
ASGNF4
line 542
;542:		cg_entities[i].weapon = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+956
ADDP4
CNSTI4 0
ASGNI4
line 543
;543:		cg_entities[i].teamPowerEffectTime = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1912
ADDP4
CNSTI4 0
ASGNI4
line 544
;544:		cg_entities[i].teamPowerType = 0;
CNSTI4 1920
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 cg_entities+1916
ADDP4
CNSTI4 0
ASGNI4
line 546
;545:
;546:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 547
;547:	}
LABELV $471
line 489
ADDRLP4 0
INDIRI4
CNSTI4 1024
LTI4 $470
line 548
;548:}
LABELV $469
endproc CG_KillCEntityInstances 12 4
proc CG_MapRestart 12 12
line 561
;549:
;550:/*
;551:===============
;552:CG_MapRestart
;553:
;554:The server has issued a map_restart, so the next snapshot
;555:is completely new and should not be interpolated to.
;556:
;557:A tournement restart will clear everything, but doesn't
;558:require a reload of all the media
;559:===============
;560:*/
;561:static void CG_MapRestart( void ) {
line 562
;562:	if ( cg_showmiss.integer ) {
ADDRGP4 cg_showmiss+12
INDIRI4
CNSTI4 0
EQI4 $508
line 563
;563:		CG_Printf( "CG_MapRestart\n" );
ADDRGP4 $511
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 564
;564:	}
LABELV $508
line 566
;565:
;566:	CG_InitLocalEntities();
ADDRGP4 CG_InitLocalEntities
CALLV
pop
line 567
;567:	CG_InitMarkPolys();
ADDRGP4 CG_InitMarkPolys
CALLV
pop
line 568
;568:	CG_ClearParticles ();
ADDRGP4 CG_ClearParticles
CALLV
pop
line 569
;569:	CG_KillCEntityInstances();
ADDRGP4 CG_KillCEntityInstances
CALLV
pop
line 572
;570:
;571:	// make sure the "3 frags left" warnings play again
;572:	cg.fraglimitWarnings = 0;
ADDRGP4 cg+80
CNSTI4 0
ASGNI4
line 574
;573:
;574:	cg.timelimitWarnings = 0;
ADDRGP4 cg+76
CNSTI4 0
ASGNI4
line 576
;575:
;576:	cg.intermissionStarted = qfalse;
ADDRGP4 cg+24
CNSTI4 0
ASGNI4
line 578
;577:
;578:	cgs.voteTime = 0;
ADDRGP4 cgs+33200
CNSTI4 0
ASGNI4
line 580
;579:
;580:	cg.mapRestart = qtrue;
ADDRGP4 cg+84
CNSTI4 1
ASGNI4
line 582
;581:
;582:	CG_StartMusic(qtrue);
CNSTI4 1
ARGI4
ADDRGP4 CG_StartMusic
CALLV
pop
line 584
;583:
;584:	trap_S_ClearLoopingSounds(qtrue);
CNSTI4 1
ARGI4
ADDRGP4 trap_S_ClearLoopingSounds
CALLV
pop
line 589
;585:
;586:	// we really should clear more parts of cg here and stop sounds
;587:
;588:	// play the "fight" sound if this is a restart without warmup
;589:	if ( cg.warmup == 0 /* && cgs.gametype == GT_TOURNAMENT */) {
ADDRGP4 cg+13352
INDIRI4
CNSTI4 0
NEI4 $517
line 590
;590:		trap_S_StartLocalSound( cgs.media.countFightSound, CHAN_ANNOUNCER );
ADDRGP4 cgs+70296+852
INDIRI4
ARGI4
CNSTI4 7
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 591
;591:		CG_CenterPrint( CG_GetStripEdString("SVINGAME", "BEGIN_DUEL"), 120, GIANTCHAR_WIDTH*2 );
ADDRGP4 $522
ARGP4
ADDRGP4 $523
ARGP4
ADDRLP4 0
ADDRGP4 CG_GetStripEdString
CALLP4
ASGNP4
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 120
ARGI4
CNSTI4 64
ARGI4
ADDRGP4 CG_CenterPrint
CALLV
pop
line 592
;592:	}
LABELV $517
line 593
;593:	if (cg_singlePlayerActive.integer) {
ADDRGP4 cg_singlePlayerActive+12
INDIRI4
CNSTI4 0
EQI4 $524
line 594
;594:		trap_Cvar_Set("ui_matchStartTime", va("%i", cg.time));
ADDRGP4 $220
ARGP4
ADDRGP4 cg+64
INDIRI4
ARGI4
ADDRLP4 0
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $527
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 595
;595:		if (cg_recordSPDemo.integer && cg_recordSPDemoName.string && *cg_recordSPDemoName.string) {
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 cg_recordSPDemo+12
INDIRI4
ADDRLP4 4
INDIRI4
EQI4 $529
ADDRGP4 cg_recordSPDemoName+16
CVPU4 4
CNSTU4 0
EQU4 $529
ADDRGP4 cg_recordSPDemoName+16
INDIRI1
CVII4 1
ADDRLP4 4
INDIRI4
EQI4 $529
line 596
;596:			trap_SendConsoleCommand(va("set g_synchronousclients 1 ; record %s \n", cg_recordSPDemoName.string));
ADDRGP4 $534
ARGP4
ADDRGP4 cg_recordSPDemoName+16
ARGP4
ADDRLP4 8
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 trap_SendConsoleCommand
CALLV
pop
line 597
;597:		}
LABELV $529
line 598
;598:	}
LABELV $524
line 599
;599:	trap_Cvar_Set("cg_thirdPerson", "0");
ADDRGP4 $536
ARGP4
ADDRGP4 $537
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 600
;600:}
LABELV $507
endproc CG_MapRestart 12 12
export CG_ParseVoiceChats
proc CG_ParseVoiceChats 16504 16
line 639
;601:
;602:#define MAX_VOICEFILESIZE	16384
;603:#define MAX_VOICEFILES		8
;604:#define MAX_VOICECHATS		64
;605:#define MAX_VOICESOUNDS		64
;606:#define MAX_CHATSIZE		64
;607:#define MAX_HEADMODELS		64
;608:
;609:typedef struct voiceChat_s
;610:{
;611:	char id[64];
;612:	int numSounds;
;613:	sfxHandle_t sounds[MAX_VOICESOUNDS];
;614:	char chats[MAX_VOICESOUNDS][MAX_CHATSIZE];
;615:} voiceChat_t;
;616:
;617:typedef struct voiceChatList_s
;618:{
;619:	char name[64];
;620:	int gender;
;621:	int numVoiceChats;
;622:	voiceChat_t voiceChats[MAX_VOICECHATS];
;623:} voiceChatList_t;
;624:
;625:typedef struct headModelVoiceChat_s
;626:{
;627:	char headmodel[64];
;628:	int voiceChatNum;
;629:} headModelVoiceChat_t;
;630:
;631:voiceChatList_t voiceChatLists[MAX_VOICEFILES];
;632://headModelVoiceChat_t headModelVoiceChat[MAX_HEADMODELS];
;633:
;634:/*
;635:=================
;636:CG_ParseVoiceChats
;637:=================
;638:*/
;639:int CG_ParseVoiceChats( const char *filename, voiceChatList_t *voiceChatList, int maxVoiceChats ) {
line 648
;640:	int	len, i;
;641:	fileHandle_t f;
;642:	char buf[MAX_VOICEFILESIZE];
;643:	char **p, *ptr;
;644:	char *token;
;645:	voiceChat_t *voiceChats;
;646:	qboolean compress;
;647:
;648:	compress = qtrue;
ADDRLP4 16412
CNSTI4 1
ASGNI4
line 649
;649:	if (cg_buildScript.integer) {
ADDRGP4 cg_buildScript+12
INDIRI4
CNSTI4 0
EQI4 $539
line 650
;650:		compress = qfalse;
ADDRLP4 16412
CNSTI4 0
ASGNI4
line 651
;651:	}
LABELV $539
line 653
;652:
;653:	len = trap_FS_FOpenFile( filename, &f, FS_READ );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 20
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 16416
ADDRGP4 trap_FS_FOpenFile
CALLI4
ASGNI4
ADDRLP4 16
ADDRLP4 16416
INDIRI4
ASGNI4
line 654
;654:	if ( !f ) {
ADDRLP4 20
INDIRI4
CNSTI4 0
NEI4 $542
line 655
;655:		trap_Print( va( S_COLOR_RED "voice chat file not found: %s\n", filename ) );
ADDRGP4 $544
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16420
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16420
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 656
;656:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $538
JUMPV
LABELV $542
line 658
;657:	}
;658:	if ( len >= MAX_VOICEFILESIZE ) {
ADDRLP4 16
INDIRI4
CNSTI4 16384
LTI4 $545
line 659
;659:		trap_Print( va( S_COLOR_RED "voice chat file too large: %s is %i, max allowed is %i", filename, len, MAX_VOICEFILESIZE ) );
ADDRGP4 $547
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16
INDIRI4
ARGI4
CNSTI4 16384
ARGI4
ADDRLP4 16420
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16420
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 660
;660:		trap_FS_FCloseFile( f );
ADDRLP4 20
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 661
;661:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $538
JUMPV
LABELV $545
line 664
;662:	}
;663:
;664:	trap_FS_Read( buf, len, f );
ADDRLP4 24
ARGP4
ADDRLP4 16
INDIRI4
ARGI4
ADDRLP4 20
INDIRI4
ARGI4
ADDRGP4 trap_FS_Read
CALLV
pop
line 665
;665:	buf[len] = 0;
ADDRLP4 16
INDIRI4
ADDRLP4 24
ADDP4
CNSTI1 0
ASGNI1
line 666
;666:	trap_FS_FCloseFile( f );
ADDRLP4 20
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 668
;667:
;668:	ptr = buf;
ADDRLP4 16408
ADDRLP4 24
ASGNP4
line 669
;669:	p = &ptr;
ADDRLP4 8
ADDRLP4 16408
ASGNP4
line 671
;670:
;671:	Com_sprintf(voiceChatList->name, sizeof(voiceChatList->name), "%s", filename);
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $548
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 672
;672:	voiceChats = voiceChatList->voiceChats;
ADDRLP4 4
ADDRFP4 4
INDIRP4
CNSTI4 72
ADDP4
ASGNP4
line 673
;673:	for ( i = 0; i < maxVoiceChats; i++ ) {
ADDRLP4 12
CNSTI4 0
ASGNI4
ADDRGP4 $552
JUMPV
LABELV $549
line 674
;674:		voiceChats[i].id[0] = 0;
CNSTI4 4420
ADDRLP4 12
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 675
;675:	}
LABELV $550
line 673
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $552
ADDRLP4 12
INDIRI4
ADDRFP4 8
INDIRI4
LTI4 $549
line 676
;676:	token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16420
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16420
INDIRP4
ASGNP4
line 677
;677:	if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $555
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $553
LABELV $555
line 678
;678:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $538
JUMPV
LABELV $553
line 680
;679:	}
;680:	if (!Q_stricmp(token, "female")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $558
ARGP4
ADDRLP4 16428
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16428
INDIRI4
CNSTI4 0
NEI4 $556
line 681
;681:		voiceChatList->gender = GENDER_FEMALE;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 1
ASGNI4
line 682
;682:	}
ADDRGP4 $557
JUMPV
LABELV $556
line 683
;683:	else if (!Q_stricmp(token, "male")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $561
ARGP4
ADDRLP4 16432
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16432
INDIRI4
CNSTI4 0
NEI4 $559
line 684
;684:		voiceChatList->gender = GENDER_MALE;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 0
ASGNI4
line 685
;685:	}
ADDRGP4 $560
JUMPV
LABELV $559
line 686
;686:	else if (!Q_stricmp(token, "neuter")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $564
ARGP4
ADDRLP4 16436
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16436
INDIRI4
CNSTI4 0
NEI4 $562
line 687
;687:		voiceChatList->gender = GENDER_NEUTER;
ADDRFP4 4
INDIRP4
CNSTI4 64
ADDP4
CNSTI4 2
ASGNI4
line 688
;688:	}
ADDRGP4 $563
JUMPV
LABELV $562
line 689
;689:	else {
line 690
;690:		trap_Print( va( S_COLOR_RED "expected gender not found in voice chat file: %s\n", filename ) );
ADDRGP4 $565
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16440
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16440
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 691
;691:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $538
JUMPV
LABELV $563
LABELV $560
LABELV $557
line 694
;692:	}
;693:
;694:	voiceChatList->numVoiceChats = 0;
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
CNSTI4 0
ASGNI4
ADDRGP4 $567
JUMPV
LABELV $566
line 695
;695:	while ( 1 ) {
line 696
;696:		token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16440
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16440
INDIRP4
ASGNP4
line 697
;697:		if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $571
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $569
LABELV $571
line 698
;698:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $538
JUMPV
LABELV $569
line 700
;699:		}
;700:		Com_sprintf(voiceChats[voiceChatList->numVoiceChats].id, sizeof( voiceChats[voiceChatList->numVoiceChats].id ), "%s", token);
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 $548
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 701
;701:		token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16448
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16448
INDIRP4
ASGNP4
line 702
;702:		if (Q_stricmp(token, "{")) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $574
ARGP4
ADDRLP4 16452
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16452
INDIRI4
CNSTI4 0
EQI4 $572
line 703
;703:			trap_Print( va( S_COLOR_RED "expected { found %s in voice chat file: %s\n", token, filename ) );
ADDRGP4 $575
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16456
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16456
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 704
;704:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $538
JUMPV
LABELV $572
line 706
;705:		}
;706:		voiceChats[voiceChatList->numVoiceChats].numSounds = 0;
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI4 64
ADDP4
CNSTI4 0
ASGNI4
ADDRGP4 $577
JUMPV
LABELV $576
line 707
;707:		while(1) {
line 708
;708:			token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16456
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16456
INDIRP4
ASGNP4
line 709
;709:			if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $581
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $579
LABELV $581
line 710
;710:				return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $538
JUMPV
LABELV $579
line 712
;711:			}
;712:			if (!Q_stricmp(token, "}"))
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $584
ARGP4
ADDRLP4 16464
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16464
INDIRI4
CNSTI4 0
NEI4 $582
line 713
;713:				break;
ADDRGP4 $578
JUMPV
LABELV $582
line 714
;714:			voiceChats[voiceChatList->numVoiceChats].sounds[voiceChats[voiceChatList->numVoiceChats].numSounds] = 
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 16468
ADDRGP4 trap_S_RegisterSound
CALLI4
ASGNI4
ADDRLP4 16472
CNSTI4 68
ASGNI4
ADDRLP4 16476
CNSTI4 4420
ADDRFP4 4
INDIRP4
ADDRLP4 16472
INDIRI4
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ASGNP4
ADDRLP4 16476
INDIRP4
CNSTI4 64
ADDP4
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 16476
INDIRP4
ADDRLP4 16472
INDIRI4
ADDP4
ADDP4
ADDRLP4 16468
INDIRI4
ASGNI4
line 716
;715:          trap_S_RegisterSound( token );
;716:			token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 8
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16480
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16480
INDIRP4
ASGNP4
line 717
;717:			if (!token || token[0] == 0) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $587
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $585
LABELV $587
line 718
;718:				return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $538
JUMPV
LABELV $585
line 720
;719:			}
;720:			Com_sprintf(voiceChats[voiceChatList->numVoiceChats].chats[
ADDRLP4 16488
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ASGNP4
ADDRLP4 16492
CNSTI4 64
ASGNI4
ADDRLP4 16488
INDIRP4
ADDRLP4 16492
INDIRI4
ADDP4
INDIRI4
CNSTI4 6
LSHI4
ADDRLP4 16488
INDIRP4
CNSTI4 324
ADDP4
ADDP4
ARGP4
ADDRLP4 16492
INDIRI4
ARGI4
ADDRGP4 $548
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 722
;721:							voiceChats[voiceChatList->numVoiceChats].numSounds], MAX_CHATSIZE, "%s", token);
;722:			voiceChats[voiceChatList->numVoiceChats].numSounds++;
ADDRLP4 16496
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
CNSTI4 64
ADDP4
ASGNP4
ADDRLP4 16496
INDIRP4
ADDRLP4 16496
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 723
;723:			if (voiceChats[voiceChatList->numVoiceChats].numSounds >= MAX_VOICESOUNDS)
ADDRLP4 16500
CNSTI4 64
ASGNI4
CNSTI4 4420
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
MULI4
ADDRLP4 4
INDIRP4
ADDP4
ADDRLP4 16500
INDIRI4
ADDP4
INDIRI4
ADDRLP4 16500
INDIRI4
LTI4 $588
line 724
;724:				break;
ADDRGP4 $578
JUMPV
LABELV $588
line 725
;725:		}
LABELV $577
line 707
ADDRGP4 $576
JUMPV
LABELV $578
line 726
;726:		voiceChatList->numVoiceChats++;
ADDRLP4 16456
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
ASGNP4
ADDRLP4 16456
INDIRP4
ADDRLP4 16456
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 727
;727:		if (voiceChatList->numVoiceChats >= maxVoiceChats)
ADDRFP4 4
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
ADDRFP4 8
INDIRI4
LTI4 $590
line 728
;728:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $538
JUMPV
LABELV $590
line 729
;729:	}
LABELV $567
line 695
ADDRGP4 $566
JUMPV
line 730
;730:	return qtrue;
CNSTI4 1
RETI4
LABELV $538
endproc CG_ParseVoiceChats 16504 16
export CG_LoadVoiceChats
proc CG_LoadVoiceChats 12 12
line 738
;731:}
;732:
;733:/*
;734:=================
;735:CG_LoadVoiceChats
;736:=================
;737:*/
;738:void CG_LoadVoiceChats( void ) {
line 741
;739:	int size;
;740:
;741:	size = trap_MemoryRemaining();
ADDRLP4 4
ADDRGP4 trap_MemoryRemaining
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 4
INDIRI4
ASGNI4
line 742
;742:	CG_ParseVoiceChats( "scripts/female1.voice", &voiceChatLists[0], MAX_VOICECHATS );
ADDRGP4 $593
ARGP4
ADDRGP4 voiceChatLists
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 743
;743:	CG_ParseVoiceChats( "scripts/female2.voice", &voiceChatLists[1], MAX_VOICECHATS );
ADDRGP4 $594
ARGP4
ADDRGP4 voiceChatLists+282952
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 744
;744:	CG_ParseVoiceChats( "scripts/female3.voice", &voiceChatLists[2], MAX_VOICECHATS );
ADDRGP4 $596
ARGP4
ADDRGP4 voiceChatLists+565904
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 745
;745:	CG_ParseVoiceChats( "scripts/male1.voice", &voiceChatLists[3], MAX_VOICECHATS );
ADDRGP4 $598
ARGP4
ADDRGP4 voiceChatLists+848856
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 746
;746:	CG_ParseVoiceChats( "scripts/male2.voice", &voiceChatLists[4], MAX_VOICECHATS );
ADDRGP4 $600
ARGP4
ADDRGP4 voiceChatLists+1131808
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 747
;747:	CG_ParseVoiceChats( "scripts/male3.voice", &voiceChatLists[5], MAX_VOICECHATS );
ADDRGP4 $602
ARGP4
ADDRGP4 voiceChatLists+1414760
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 748
;748:	CG_ParseVoiceChats( "scripts/male4.voice", &voiceChatLists[6], MAX_VOICECHATS );
ADDRGP4 $604
ARGP4
ADDRGP4 voiceChatLists+1697712
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 749
;749:	CG_ParseVoiceChats( "scripts/male5.voice", &voiceChatLists[7], MAX_VOICECHATS );
ADDRGP4 $606
ARGP4
ADDRGP4 voiceChatLists+1980664
ARGP4
CNSTI4 64
ARGI4
ADDRGP4 CG_ParseVoiceChats
CALLI4
pop
line 750
;750:	CG_Printf("voice chat memory size = %d\n", size - trap_MemoryRemaining());
ADDRLP4 8
ADDRGP4 trap_MemoryRemaining
CALLI4
ASGNI4
ADDRGP4 $608
ARGP4
ADDRLP4 0
INDIRI4
ADDRLP4 8
INDIRI4
SUBI4
ARGI4
ADDRGP4 CG_Printf
CALLV
pop
line 751
;751:}
LABELV $592
endproc CG_LoadVoiceChats 12 12
export CG_HeadModelVoiceChats
proc CG_HeadModelVoiceChats 16424 16
line 758
;752:
;753:/*
;754:=================
;755:CG_HeadModelVoiceChats
;756:=================
;757:*/
;758:int CG_HeadModelVoiceChats( char *filename ) {
line 765
;759:	int	len, i;
;760:	fileHandle_t f;
;761:	char buf[MAX_VOICEFILESIZE];
;762:	char **p, *ptr;
;763:	char *token;
;764:
;765:	len = trap_FS_FOpenFile( filename, &f, FS_READ );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 12
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 16408
ADDRGP4 trap_FS_FOpenFile
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 16408
INDIRI4
ASGNI4
line 766
;766:	if ( !f ) {
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $610
line 768
;767:		//trap_Print( va( "voice chat file not found: %s\n", filename ) );
;768:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $609
JUMPV
LABELV $610
line 770
;769:	}
;770:	if ( len >= MAX_VOICEFILESIZE ) {
ADDRLP4 8
INDIRI4
CNSTI4 16384
LTI4 $612
line 771
;771:		trap_Print( va( S_COLOR_RED "voice chat file too large: %s is %i, max allowed is %i", filename, len, MAX_VOICEFILESIZE ) );
ADDRGP4 $547
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 8
INDIRI4
ARGI4
CNSTI4 16384
ARGI4
ADDRLP4 16412
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16412
INDIRP4
ARGP4
ADDRGP4 trap_Print
CALLV
pop
line 772
;772:		trap_FS_FCloseFile( f );
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 773
;773:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $609
JUMPV
LABELV $612
line 776
;774:	}
;775:
;776:	trap_FS_Read( buf, len, f );
ADDRLP4 16
ARGP4
ADDRLP4 8
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 trap_FS_Read
CALLV
pop
line 777
;777:	buf[len] = 0;
ADDRLP4 8
INDIRI4
ADDRLP4 16
ADDP4
CNSTI1 0
ASGNI1
line 778
;778:	trap_FS_FCloseFile( f );
ADDRLP4 12
INDIRI4
ARGI4
ADDRGP4 trap_FS_FCloseFile
CALLV
pop
line 780
;779:
;780:	ptr = buf;
ADDRLP4 16404
ADDRLP4 16
ASGNP4
line 781
;781:	p = &ptr;
ADDRLP4 16400
ADDRLP4 16404
ASGNP4
line 783
;782:
;783:	token = COM_ParseExt((const char **)p, qtrue);
ADDRLP4 16400
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRLP4 16412
ADDRGP4 COM_ParseExt
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 16412
INDIRP4
ASGNP4
line 784
;784:	if (!token || token[0] == 0) {
ADDRLP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $616
ADDRLP4 4
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $614
LABELV $616
line 785
;785:		return -1;
CNSTI4 -1
RETI4
ADDRGP4 $609
JUMPV
LABELV $614
line 788
;786:	}
;787:
;788:	for ( i = 0; i < MAX_VOICEFILES; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
LABELV $617
line 789
;789:		if ( !Q_stricmp(token, voiceChatLists[i].name) ) {
ADDRLP4 4
INDIRP4
ARGP4
CNSTI4 282952
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 voiceChatLists
ADDP4
ARGP4
ADDRLP4 16420
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16420
INDIRI4
CNSTI4 0
NEI4 $621
line 790
;790:			return i;
ADDRLP4 0
INDIRI4
RETI4
ADDRGP4 $609
JUMPV
LABELV $621
line 792
;791:		}
;792:	}
LABELV $618
line 788
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 8
LTI4 $617
line 796
;793:
;794:	//FIXME: maybe try to load the .voice file which name is stored in token?
;795:
;796:	return -1;
CNSTI4 -1
RETI4
LABELV $609
endproc CG_HeadModelVoiceChats 16424 16
export CG_GetVoiceChat
proc CG_GetVoiceChat 16 8
line 805
;797:}
;798:
;799:
;800:/*
;801:=================
;802:CG_GetVoiceChat
;803:=================
;804:*/
;805:int CG_GetVoiceChat( voiceChatList_t *voiceChatList, const char *id, sfxHandle_t *snd, char **chat) {
line 808
;806:	int i, rnd;
;807:
;808:	for ( i = 0; i < voiceChatList->numVoiceChats; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $627
JUMPV
LABELV $624
line 809
;809:		if ( !Q_stricmp( id, voiceChatList->voiceChats[i].id ) ) {
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 4420
ADDRLP4 0
INDIRI4
MULI4
ADDRFP4 0
INDIRP4
CNSTI4 72
ADDP4
ADDP4
ARGP4
ADDRLP4 8
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
NEI4 $628
line 810
;810:			rnd = random() * voiceChatList->voiceChats[i].numSounds;
ADDRLP4 12
ADDRGP4 rand
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 12
INDIRI4
CNSTI4 32767
BANDI4
CVIF4 4
CNSTF4 1191181824
DIVF4
CNSTI4 4420
ADDRLP4 0
INDIRI4
MULI4
ADDRFP4 0
INDIRP4
CNSTI4 72
ADDP4
ADDP4
CNSTI4 64
ADDP4
INDIRI4
CVIF4 4
MULF4
CVFI4 4
ASGNI4
line 811
;811:			*snd = voiceChatList->voiceChats[i].sounds[rnd];
ADDRFP4 8
INDIRP4
ADDRLP4 4
INDIRI4
CNSTI4 2
LSHI4
CNSTI4 4420
ADDRLP4 0
INDIRI4
MULI4
ADDRFP4 0
INDIRP4
CNSTI4 72
ADDP4
ADDP4
CNSTI4 68
ADDP4
ADDP4
INDIRI4
ASGNI4
line 812
;812:			*chat = voiceChatList->voiceChats[i].chats[rnd];
ADDRFP4 12
INDIRP4
ADDRLP4 4
INDIRI4
CNSTI4 6
LSHI4
CNSTI4 4420
ADDRLP4 0
INDIRI4
MULI4
ADDRFP4 0
INDIRP4
CNSTI4 72
ADDP4
ADDP4
CNSTI4 324
ADDP4
ADDP4
ASGNP4
line 813
;813:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $623
JUMPV
LABELV $628
line 815
;814:		}
;815:	}
LABELV $625
line 808
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $627
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 68
ADDP4
INDIRI4
LTI4 $624
line 816
;816:	return qfalse;
CNSTI4 0
RETI4
LABELV $623
endproc CG_GetVoiceChat 16 8
export CG_VoiceChatListForClient
proc CG_VoiceChatListForClient 8 0
line 824
;817:}
;818:
;819:/*
;820:=================
;821:CG_VoiceChatListForClient
;822:=================
;823:*/
;824:voiceChatList_t *CG_VoiceChatListForClient( int clientNum ) {
line 827
;825:	clientInfo_t *ci;
;826:
;827:	if ( clientNum < 0 || clientNum >= MAX_CLIENTS ) {
ADDRLP4 4
ADDRFP4 0
INDIRI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
LTI4 $633
ADDRLP4 4
INDIRI4
CNSTI4 32
LTI4 $631
LABELV $633
line 828
;828:		clientNum = 0;
ADDRFP4 0
CNSTI4 0
ASGNI4
line 829
;829:	}
LABELV $631
line 830
;830:	ci = &cgs.clientinfo[ clientNum ];
ADDRLP4 0
CNSTI4 788
ADDRFP4 0
INDIRI4
MULI4
ADDRGP4 cgs+43024
ADDP4
ASGNP4
line 910
;831:/*
;832:	int voiceChatNum, i, j, k, gender;
;833:	char filename[MAX_QPATH], headModelName[MAX_QPATH];
;834:
;835:	for ( k = 0; k < 2; k++ ) {
;836:		if ( k == 0 ) {
;837:			if (ci->headModelName[0] == '*') {
;838:				Com_sprintf( headModelName, sizeof(headModelName), "%s/%s", ci->headModelName+1, ci->headSkinName );
;839:			}
;840:			else {
;841:				Com_sprintf( headModelName, sizeof(headModelName), "%s/%s", ci->headModelName, ci->headSkinName );
;842:			}
;843:		}
;844:		else {
;845:			if (ci->headModelName[0] == '*') {
;846:				Com_sprintf( headModelName, sizeof(headModelName), "%s", ci->headModelName+1 );
;847:			}
;848:			else {
;849:				Com_sprintf( headModelName, sizeof(headModelName), "%s", ci->headModelName );
;850:			}
;851:		}
;852:		// find the voice file for the head model the client uses
;853:		for ( i = 0; i < MAX_HEADMODELS; i++ ) {
;854:			if (!Q_stricmp(headModelVoiceChat[i].headmodel, headModelName)) {
;855:				break;
;856:			}
;857:		}
;858:		if (i < MAX_HEADMODELS) {
;859:			return &voiceChatLists[headModelVoiceChat[i].voiceChatNum];
;860:		}
;861:		// find a <headmodelname>.vc file
;862:		for ( i = 0; i < MAX_HEADMODELS; i++ ) {
;863:			if (!strlen(headModelVoiceChat[i].headmodel)) {
;864:				Com_sprintf(filename, sizeof(filename), "scripts/%s.vc", headModelName);
;865:				voiceChatNum = CG_HeadModelVoiceChats(filename);
;866:				if (voiceChatNum == -1)
;867:					break;
;868:				Com_sprintf(headModelVoiceChat[i].headmodel, sizeof ( headModelVoiceChat[i].headmodel ),
;869:							"%s", headModelName);
;870:				headModelVoiceChat[i].voiceChatNum = voiceChatNum;
;871:				return &voiceChatLists[headModelVoiceChat[i].voiceChatNum];
;872:			}
;873:		}
;874:	}
;875:	gender = ci->gender;
;876:	for (k = 0; k < 2; k++) {
;877:		// just pick the first with the right gender
;878:		for ( i = 0; i < MAX_VOICEFILES; i++ ) {
;879:			if (strlen(voiceChatLists[i].name)) {
;880:				if (voiceChatLists[i].gender == gender) {
;881:					// store this head model with voice chat for future reference
;882:					for ( j = 0; j < MAX_HEADMODELS; j++ ) {
;883:						if (!strlen(headModelVoiceChat[j].headmodel)) {
;884:							Com_sprintf(headModelVoiceChat[j].headmodel, sizeof ( headModelVoiceChat[j].headmodel ),
;885:									"%s", headModelName);
;886:							headModelVoiceChat[j].voiceChatNum = i;
;887:							break;
;888:						}
;889:					}
;890:					return &voiceChatLists[i];
;891:				}
;892:			}
;893:		}
;894:		// fall back to male gender because we don't have neuter in the mission pack
;895:		if (gender == GENDER_MALE)
;896:			break;
;897:		gender = GENDER_MALE;
;898:	}
;899:	// store this head model with voice chat for future reference
;900:	for ( j = 0; j < MAX_HEADMODELS; j++ ) {
;901:		if (!strlen(headModelVoiceChat[j].headmodel)) {
;902:			Com_sprintf(headModelVoiceChat[j].headmodel, sizeof ( headModelVoiceChat[j].headmodel ),
;903:					"%s", headModelName);
;904:			headModelVoiceChat[j].voiceChatNum = 0;
;905:			break;
;906:		}
;907:	}
;908:	*/
;909:	// just return the first voice chat list
;910:	return &voiceChatLists[0];
ADDRGP4 voiceChatLists
RETP4
LABELV $630
endproc CG_VoiceChatListForClient 8 0
export CG_PlayVoiceChat
proc CG_PlayVoiceChat 8 12
line 931
;911:}
;912:
;913:#define MAX_VOICECHATBUFFER		32
;914:
;915:typedef struct bufferedVoiceChat_s
;916:{
;917:	int clientNum;
;918:	sfxHandle_t snd;
;919:	int voiceOnly;
;920:	char cmd[MAX_SAY_TEXT];
;921:	char message[MAX_SAY_TEXT];
;922:} bufferedVoiceChat_t;
;923:
;924:bufferedVoiceChat_t voiceChatBuffer[MAX_VOICECHATBUFFER];
;925:
;926:/*
;927:=================
;928:CG_PlayVoiceChat
;929:=================
;930:*/
;931:void CG_PlayVoiceChat( bufferedVoiceChat_t *vchat ) {
line 933
;932:	// if we are going into the intermission, don't start any voices
;933:	if ( cg.intermissionStarted ) {
ADDRGP4 cg+24
INDIRI4
CNSTI4 0
EQI4 $636
line 934
;934:		return;
ADDRGP4 $635
JUMPV
LABELV $636
line 937
;935:	}
;936:
;937:	if ( !cg_noVoiceChats.integer ) {
ADDRGP4 cg_noVoiceChats+12
INDIRI4
CNSTI4 0
NEI4 $639
line 938
;938:		trap_S_StartLocalSound( vchat->snd, CHAN_VOICE);
ADDRFP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ARGI4
CNSTI4 3
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 939
;939:		if (vchat->clientNum != cg.snap->ps.clientNum) {
ADDRFP4 0
INDIRP4
INDIRI4
ADDRGP4 cg+36
INDIRP4
CNSTI4 188
ADDP4
INDIRI4
EQI4 $642
line 940
;940:			int orderTask = CG_ValidOrder(vchat->cmd);
ADDRFP4 0
INDIRP4
CNSTI4 12
ADDP4
ARGP4
ADDRLP4 4
ADDRGP4 CG_ValidOrder
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 4
INDIRI4
ASGNI4
line 941
;941:			if (orderTask > 0) {
ADDRLP4 0
INDIRI4
CNSTI4 0
LEI4 $645
line 942
;942:				cgs.acceptOrderTime = cg.time + 5000;
ADDRGP4 cgs+70252
ADDRGP4 cg+64
INDIRI4
CNSTI4 5000
ADDI4
ASGNI4
line 943
;943:				Q_strncpyz(cgs.acceptVoice, vchat->cmd, sizeof(cgs.acceptVoice));
ADDRGP4 cgs+70264
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 12
ADDP4
ARGP4
CNSTI4 32
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 944
;944:				cgs.acceptTask = orderTask;
ADDRGP4 cgs+70256
ADDRLP4 0
INDIRI4
ASGNI4
line 945
;945:				cgs.acceptLeader = vchat->clientNum;
ADDRGP4 cgs+70260
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 946
;946:			}
LABELV $645
line 948
;947:			// see if this was an order
;948:			CG_ShowResponseHead();
ADDRGP4 CG_ShowResponseHead
CALLV
pop
line 949
;949:		}
LABELV $642
line 950
;950:	}
LABELV $639
line 951
;951:	if (!vchat->voiceOnly && !cg_noVoiceText.integer) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
ADDRLP4 0
INDIRI4
NEI4 $653
ADDRGP4 cg_noVoiceText+12
INDIRI4
ADDRLP4 0
INDIRI4
NEI4 $653
line 952
;952:		CG_AddToTeamChat( vchat->message );
ADDRFP4 0
INDIRP4
CNSTI4 162
ADDP4
ARGP4
ADDRGP4 CG_AddToTeamChat
CALLV
pop
line 953
;953:		CG_Printf( "%s\n", vchat->message );
ADDRGP4 $656
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 162
ADDP4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 954
;954:	}
LABELV $653
line 955
;955:	voiceChatBuffer[cg.voiceChatBufferOut].snd = 0;
CNSTI4 312
ADDRGP4 cg+13348
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer+4
ADDP4
CNSTI4 0
ASGNI4
line 956
;956:}
LABELV $635
endproc CG_PlayVoiceChat 8 12
export CG_PlayBufferedVoiceChats
proc CG_PlayBufferedVoiceChats 0 4
line 963
;957:
;958:/*
;959:=====================
;960:CG_PlayBufferedVoieChats
;961:=====================
;962:*/
;963:void CG_PlayBufferedVoiceChats( void ) {
line 964
;964:	if ( cg.voiceChatTime < cg.time ) {
ADDRGP4 cg+13340
INDIRI4
ADDRGP4 cg+64
INDIRI4
GEI4 $660
line 965
;965:		if (cg.voiceChatBufferOut != cg.voiceChatBufferIn && voiceChatBuffer[cg.voiceChatBufferOut].snd) {
ADDRGP4 cg+13348
INDIRI4
ADDRGP4 cg+13344
INDIRI4
EQI4 $664
CNSTI4 312
ADDRGP4 cg+13348
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer+4
ADDP4
INDIRI4
CNSTI4 0
EQI4 $664
line 967
;966:			//
;967:			CG_PlayVoiceChat(&voiceChatBuffer[cg.voiceChatBufferOut]);
CNSTI4 312
ADDRGP4 cg+13348
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer
ADDP4
ARGP4
ADDRGP4 CG_PlayVoiceChat
CALLV
pop
line 969
;968:			//
;969:			cg.voiceChatBufferOut = (cg.voiceChatBufferOut + 1) % MAX_VOICECHATBUFFER;
ADDRGP4 cg+13348
ADDRGP4 cg+13348
INDIRI4
CNSTI4 1
ADDI4
CNSTI4 32
MODI4
ASGNI4
line 970
;970:			cg.voiceChatTime = cg.time + 1000;
ADDRGP4 cg+13340
ADDRGP4 cg+64
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 971
;971:		}
LABELV $664
line 972
;972:	}
LABELV $660
line 973
;973:}
LABELV $659
endproc CG_PlayBufferedVoiceChats 0 4
export CG_AddBufferedVoiceChat
proc CG_AddBufferedVoiceChat 8 12
line 980
;974:
;975:/*
;976:=====================
;977:CG_AddBufferedVoiceChat
;978:=====================
;979:*/
;980:void CG_AddBufferedVoiceChat( bufferedVoiceChat_t *vchat ) {
line 982
;981:	// if we are going into the intermission, don't start any voices
;982:	if ( cg.intermissionStarted ) {
ADDRGP4 cg+24
INDIRI4
CNSTI4 0
EQI4 $676
line 983
;983:		return;
ADDRGP4 $675
JUMPV
LABELV $676
line 986
;984:	}
;985:
;986:	memcpy(&voiceChatBuffer[cg.voiceChatBufferIn], vchat, sizeof(bufferedVoiceChat_t));
ADDRLP4 0
CNSTI4 312
ASGNI4
ADDRLP4 0
INDIRI4
ADDRGP4 cg+13344
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer
ADDP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 memcpy
CALLP4
pop
line 987
;987:	cg.voiceChatBufferIn = (cg.voiceChatBufferIn + 1) % MAX_VOICECHATBUFFER;
ADDRGP4 cg+13344
ADDRGP4 cg+13344
INDIRI4
CNSTI4 1
ADDI4
CNSTI4 32
MODI4
ASGNI4
line 988
;988:	if (cg.voiceChatBufferIn == cg.voiceChatBufferOut) {
ADDRGP4 cg+13344
INDIRI4
ADDRGP4 cg+13348
INDIRI4
NEI4 $682
line 989
;989:		CG_PlayVoiceChat( &voiceChatBuffer[cg.voiceChatBufferOut] );
CNSTI4 312
ADDRGP4 cg+13348
INDIRI4
MULI4
ADDRGP4 voiceChatBuffer
ADDP4
ARGP4
ADDRGP4 CG_PlayVoiceChat
CALLV
pop
line 990
;990:		cg.voiceChatBufferOut++;
ADDRLP4 4
ADDRGP4 cg+13348
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 991
;991:	}
LABELV $682
line 992
;992:}
LABELV $675
endproc CG_AddBufferedVoiceChat 8 12
export CG_VoiceChatLocal
proc CG_VoiceChatLocal 340 28
line 999
;993:
;994:/*
;995:=================
;996:CG_VoiceChatLocal
;997:=================
;998:*/
;999:void CG_VoiceChatLocal( int mode, qboolean voiceOnly, int clientNum, int color, const char *cmd ) {
line 1007
;1000:	char *chat;
;1001:	voiceChatList_t *voiceChatList;
;1002:	clientInfo_t *ci;
;1003:	sfxHandle_t snd;
;1004:	bufferedVoiceChat_t vchat;
;1005:
;1006:	// if we are going into the intermission, don't start any voices
;1007:	if ( cg.intermissionStarted ) {
ADDRGP4 cg+24
INDIRI4
CNSTI4 0
EQI4 $689
line 1008
;1008:		return;
ADDRGP4 $688
JUMPV
LABELV $689
line 1011
;1009:	}
;1010:
;1011:	if ( clientNum < 0 || clientNum >= MAX_CLIENTS ) {
ADDRLP4 328
ADDRFP4 8
INDIRI4
ASGNI4
ADDRLP4 328
INDIRI4
CNSTI4 0
LTI4 $694
ADDRLP4 328
INDIRI4
CNSTI4 32
LTI4 $692
LABELV $694
line 1012
;1012:		clientNum = 0;
ADDRFP4 8
CNSTI4 0
ASGNI4
line 1013
;1013:	}
LABELV $692
line 1014
;1014:	ci = &cgs.clientinfo[ clientNum ];
ADDRLP4 320
CNSTI4 788
ADDRFP4 8
INDIRI4
MULI4
ADDRGP4 cgs+43024
ADDP4
ASGNP4
line 1016
;1015:
;1016:	cgs.currentVoiceClient = clientNum;
ADDRGP4 cgs+70248
ADDRFP4 8
INDIRI4
ASGNI4
line 1018
;1017:
;1018:	voiceChatList = CG_VoiceChatListForClient( clientNum );
ADDRFP4 8
INDIRI4
ARGI4
ADDRLP4 332
ADDRGP4 CG_VoiceChatListForClient
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 332
INDIRP4
ASGNP4
line 1020
;1019:
;1020:	if ( CG_GetVoiceChat( voiceChatList, cmd, &snd, &chat ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRFP4 16
INDIRP4
ARGP4
ADDRLP4 324
ARGP4
ADDRLP4 316
ARGP4
ADDRLP4 336
ADDRGP4 CG_GetVoiceChat
CALLI4
ASGNI4
ADDRLP4 336
INDIRI4
CNSTI4 0
EQI4 $697
line 1022
;1021:		//
;1022:		if ( mode == SAY_TEAM || !cg_teamChatsOnly.integer ) {
ADDRFP4 0
INDIRI4
CNSTI4 1
EQI4 $702
ADDRGP4 cg_teamChatsOnly+12
INDIRI4
CNSTI4 0
NEI4 $699
LABELV $702
line 1023
;1023:			vchat.clientNum = clientNum;
ADDRLP4 4
ADDRFP4 8
INDIRI4
ASGNI4
line 1024
;1024:			vchat.snd = snd;
ADDRLP4 4+4
ADDRLP4 324
INDIRI4
ASGNI4
line 1025
;1025:			vchat.voiceOnly = voiceOnly;
ADDRLP4 4+8
ADDRFP4 4
INDIRI4
ASGNI4
line 1026
;1026:			Q_strncpyz(vchat.cmd, cmd, sizeof(vchat.cmd));
ADDRLP4 4+12
ARGP4
ADDRFP4 16
INDIRP4
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 1027
;1027:			if ( mode == SAY_TELL ) {
ADDRFP4 0
INDIRI4
CNSTI4 2
NEI4 $707
line 1028
;1028:				Com_sprintf(vchat.message, sizeof(vchat.message), "[%s]: %c%c%s", ci->name, Q_COLOR_ESCAPE, color, chat);
ADDRLP4 4+162
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 $711
ARGP4
ADDRLP4 320
INDIRP4
CNSTI4 4
ADDP4
ARGP4
CNSTI4 94
ARGI4
ADDRFP4 12
INDIRI4
ARGI4
ADDRLP4 316
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1029
;1029:			}
ADDRGP4 $708
JUMPV
LABELV $707
line 1030
;1030:			else if ( mode == SAY_TEAM ) {
ADDRFP4 0
INDIRI4
CNSTI4 1
NEI4 $712
line 1031
;1031:				Com_sprintf(vchat.message, sizeof(vchat.message), "(%s): %c%c%s", ci->name, Q_COLOR_ESCAPE, color, chat);
ADDRLP4 4+162
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 $716
ARGP4
ADDRLP4 320
INDIRP4
CNSTI4 4
ADDP4
ARGP4
CNSTI4 94
ARGI4
ADDRFP4 12
INDIRI4
ARGI4
ADDRLP4 316
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1032
;1032:			}
ADDRGP4 $713
JUMPV
LABELV $712
line 1033
;1033:			else {
line 1034
;1034:				Com_sprintf(vchat.message, sizeof(vchat.message), "%s: %c%c%s", ci->name, Q_COLOR_ESCAPE, color, chat);
ADDRLP4 4+162
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 $719
ARGP4
ADDRLP4 320
INDIRP4
CNSTI4 4
ADDP4
ARGP4
CNSTI4 94
ARGI4
ADDRFP4 12
INDIRI4
ARGI4
ADDRLP4 316
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1035
;1035:			}
LABELV $713
LABELV $708
line 1036
;1036:			CG_AddBufferedVoiceChat(&vchat);
ADDRLP4 4
ARGP4
ADDRGP4 CG_AddBufferedVoiceChat
CALLV
pop
line 1037
;1037:		}
LABELV $699
line 1038
;1038:	}
LABELV $697
line 1039
;1039:}
LABELV $688
endproc CG_VoiceChatLocal 340 28
export CG_VoiceChat
proc CG_VoiceChat 64 20
line 1046
;1040:
;1041:/*
;1042:=================
;1043:CG_VoiceChat
;1044:=================
;1045:*/
;1046:void CG_VoiceChat( int mode ) {
line 1051
;1047:	const char *cmd;
;1048:	int clientNum, color;
;1049:	qboolean voiceOnly;
;1050:
;1051:	voiceOnly = atoi(CG_Argv(1));
CNSTI4 1
ARGI4
ADDRLP4 16
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 20
INDIRI4
ASGNI4
line 1052
;1052:	clientNum = atoi(CG_Argv(2));
CNSTI4 2
ARGI4
ADDRLP4 24
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 28
INDIRI4
ASGNI4
line 1053
;1053:	color = atoi(CG_Argv(3));
CNSTI4 3
ARGI4
ADDRLP4 32
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 32
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 36
INDIRI4
ASGNI4
line 1054
;1054:	cmd = CG_Argv(4);
CNSTI4 4
ARGI4
ADDRLP4 40
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 40
INDIRP4
ASGNP4
line 1056
;1055:
;1056:	if (cg_noTaunt.integer != 0) {
ADDRGP4 cg_noTaunt+12
INDIRI4
CNSTI4 0
EQI4 $721
line 1057
;1057:		if (!strcmp(cmd, VOICECHAT_KILLINSULT)  || !strcmp(cmd, VOICECHAT_TAUNT) || \
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $726
ARGP4
ADDRLP4 44
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 44
INDIRI4
CNSTI4 0
EQI4 $734
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $727
ARGP4
ADDRLP4 48
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 48
INDIRI4
CNSTI4 0
EQI4 $734
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $728
ARGP4
ADDRLP4 52
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 52
INDIRI4
CNSTI4 0
EQI4 $734
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $729
ARGP4
ADDRLP4 56
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 56
INDIRI4
CNSTI4 0
EQI4 $734
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $730
ARGP4
ADDRLP4 60
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 60
INDIRI4
CNSTI4 0
NEI4 $724
LABELV $734
line 1060
;1058:			!strcmp(cmd, VOICECHAT_DEATHINSULT) || !strcmp(cmd, VOICECHAT_KILLGAUNTLET) || \
;1059:			!strcmp(cmd, VOICECHAT_PRAISE)) {
;1060:			return;
ADDRGP4 $720
JUMPV
LABELV $724
line 1062
;1061:		}
;1062:	}
LABELV $721
line 1064
;1063:
;1064:	CG_VoiceChatLocal( mode, voiceOnly, clientNum, color, cmd );
ADDRFP4 0
INDIRI4
ARGI4
ADDRLP4 12
INDIRI4
ARGI4
ADDRLP4 4
INDIRI4
ARGI4
ADDRLP4 8
INDIRI4
ARGI4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 CG_VoiceChatLocal
CALLV
pop
line 1065
;1065:}
LABELV $720
endproc CG_VoiceChat 64 20
proc CG_RemoveChatEscapeChar 16 0
line 1072
;1066:
;1067:/*
;1068:=================
;1069:CG_RemoveChatEscapeChar
;1070:=================
;1071:*/
;1072:static void CG_RemoveChatEscapeChar( char *text ) {
line 1075
;1073:	int i, l;
;1074:
;1075:	l = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 1076
;1076:	for ( i = 0; text[i]; i++ ) {
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $739
JUMPV
LABELV $736
line 1077
;1077:		if (text[i] == '\x19')
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 25
NEI4 $740
line 1078
;1078:			continue;
ADDRGP4 $737
JUMPV
LABELV $740
line 1079
;1079:		text[l++] = text[i];
ADDRLP4 8
ADDRLP4 4
INDIRI4
ASGNI4
ADDRLP4 4
ADDRLP4 8
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 8
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRLP4 12
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1080
;1080:	}
LABELV $737
line 1076
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $739
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $736
line 1081
;1081:	text[l] = '\0';
ADDRLP4 4
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1082
;1082:}
LABELV $735
endproc CG_RemoveChatEscapeChar 16 0
export CG_CheckSVStripEdRef
proc CG_CheckSVStripEdRef 1084 12
line 1087
;1083:
;1084:#define MAX_STRIPED_SV_STRING 1024
;1085:
;1086:void CG_CheckSVStripEdRef(char *buf, const char *str)
;1087:{ //I don't really like doing this. But it utilizes the system that was already in place.
line 1088
;1088:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1089
;1089:	int b = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 1090
;1090:	int strLen = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 1091
;1091:	qboolean gotStrip = qfalse;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1093
;1092:
;1093:	if (!str || !str[0])
ADDRLP4 16
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $745
ADDRLP4 16
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $743
LABELV $745
line 1094
;1094:	{
line 1095
;1095:		if (str)
ADDRFP4 4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $742
line 1096
;1096:		{
line 1097
;1097:			strcpy(buf, str);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 1098
;1098:		}
line 1099
;1099:		return;
ADDRGP4 $742
JUMPV
LABELV $743
line 1102
;1100:	}
;1101:
;1102:	strcpy(buf, str);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 1104
;1103:
;1104:	strLen = strlen(str);
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 20
INDIRI4
ASGNI4
line 1106
;1105:
;1106:	if (strLen >= MAX_STRIPED_SV_STRING)
ADDRLP4 4
INDIRI4
CNSTI4 1024
LTI4 $751
line 1107
;1107:	{
line 1108
;1108:		return;
ADDRGP4 $742
JUMPV
LABELV $750
line 1112
;1109:	}
;1110:
;1111:	while (i < strLen && str[i])
;1112:	{
line 1113
;1113:		gotStrip = qfalse;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 1115
;1114:
;1115:		if (str[i] == '@' && (i+1) < strLen)
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 64
NEI4 $753
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ADDRLP4 4
INDIRI4
GEI4 $753
line 1116
;1116:		{
line 1117
;1117:			if (str[i+1] == '@' && (i+2) < strLen)
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 64
NEI4 $755
ADDRLP4 0
INDIRI4
CNSTI4 2
ADDI4
ADDRLP4 4
INDIRI4
GEI4 $755
line 1118
;1118:			{
line 1119
;1119:				if (str[i+2] == '@' && (i+3) < strLen)
ADDRLP4 0
INDIRI4
CNSTI4 2
ADDI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 64
NEI4 $757
ADDRLP4 0
INDIRI4
CNSTI4 3
ADDI4
ADDRLP4 4
INDIRI4
GEI4 $757
line 1120
;1120:				{ //@@@ should mean to insert a striped reference here, so insert it into buf at the current place
line 1122
;1121:					char stripRef[MAX_STRIPED_SV_STRING];
;1122:					int r = 0;
ADDRLP4 36
CNSTI4 0
ASGNI4
ADDRGP4 $760
JUMPV
LABELV $759
line 1125
;1123:
;1124:					while (i < strLen && str[i] == '@')
;1125:					{
line 1126
;1126:						i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1127
;1127:					}
LABELV $760
line 1124
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
GEI4 $762
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 64
EQI4 $759
LABELV $762
ADDRGP4 $764
JUMPV
LABELV $763
line 1130
;1128:
;1129:					while (i < strLen && str[i] && str[i] != ' ' && str[i] != ':' && str[i] != '.' && str[i] != '\n')
;1130:					{
line 1131
;1131:						stripRef[r] = str[i];
ADDRLP4 36
INDIRI4
ADDRLP4 40
ADDP4
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1132
;1132:						r++;
ADDRLP4 36
ADDRLP4 36
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1133
;1133:						i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1134
;1134:					}
LABELV $764
line 1129
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
GEI4 $770
ADDRLP4 1072
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
ASGNI4
ADDRLP4 1072
INDIRI4
CNSTI4 0
EQI4 $770
ADDRLP4 1072
INDIRI4
CNSTI4 32
EQI4 $770
ADDRLP4 1072
INDIRI4
CNSTI4 58
EQI4 $770
ADDRLP4 1072
INDIRI4
CNSTI4 46
EQI4 $770
ADDRLP4 1072
INDIRI4
CNSTI4 10
NEI4 $763
LABELV $770
line 1135
;1135:					stripRef[r] = 0;
ADDRLP4 36
INDIRI4
ADDRLP4 40
ADDP4
CNSTI1 0
ASGNI1
line 1137
;1136:
;1137:					buf[b] = 0;
ADDRLP4 12
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1138
;1138:					Q_strcat(buf, MAX_STRIPED_SV_STRING, CG_GetStripEdString("SVINGAME", stripRef));
ADDRGP4 $522
ARGP4
ADDRLP4 40
ARGP4
ADDRLP4 1076
ADDRGP4 CG_GetStripEdString
CALLP4
ASGNP4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 1024
ARGI4
ADDRLP4 1076
INDIRP4
ARGP4
ADDRGP4 Q_strcat
CALLV
pop
line 1139
;1139:					b = strlen(buf);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 1080
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 1080
INDIRI4
ASGNI4
line 1140
;1140:				}
LABELV $757
line 1141
;1141:			}
LABELV $755
line 1142
;1142:		}
LABELV $753
line 1144
;1143:
;1144:		if (!gotStrip)
ADDRLP4 8
INDIRI4
CNSTI4 0
NEI4 $771
line 1145
;1145:		{
line 1146
;1146:			buf[b] = str[i];
ADDRLP4 12
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
ASGNI1
line 1147
;1147:			b++;
ADDRLP4 12
ADDRLP4 12
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1148
;1148:		}
LABELV $771
line 1149
;1149:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1150
;1150:	}
LABELV $751
line 1111
ADDRLP4 0
INDIRI4
ADDRLP4 4
INDIRI4
GEI4 $773
ADDRLP4 0
INDIRI4
ADDRFP4 4
INDIRP4
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $750
LABELV $773
line 1152
;1151:
;1152:	buf[b] = 0;
ADDRLP4 12
INDIRI4
ADDRFP4 0
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1153
;1153:}
LABELV $742
endproc CG_CheckSVStripEdRef 1084 12
proc CG_ServerCommand 1404 20
line 1163
;1154:
;1155:/*
;1156:=================
;1157:CG_ServerCommand
;1158:
;1159:The string has been tokenized and can be retrieved with
;1160:Cmd_Argc() / Cmd_Argv()
;1161:=================
;1162:*/
;1163:static void CG_ServerCommand( void ) {
line 1167
;1164:	const char	*cmd;
;1165:	char		text[MAX_SAY_TEXT];
;1166:
;1167:	cmd = CG_Argv(0);
CNSTI4 0
ARGI4
ADDRLP4 156
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 156
INDIRP4
ASGNP4
line 1169
;1168:
;1169:	if ( !cmd[0] ) {
ADDRLP4 0
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $775
line 1171
;1170:		// server claimed the command
;1171:		return;
ADDRGP4 $774
JUMPV
LABELV $775
line 1174
;1172:	}
;1173:
;1174:	if ( !strcmp( cmd, "spd" ) ) 
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $779
ARGP4
ADDRLP4 160
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 160
INDIRI4
CNSTI4 0
NEI4 $777
line 1175
;1175:	{
line 1180
;1176:		const char *ID;
;1177:		int holdInt,count,i;
;1178:		char string[1204];
;1179:
;1180:		count = trap_Argc();
ADDRLP4 1384
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 1372
ADDRLP4 1384
INDIRI4
ASGNI4
line 1182
;1181:
;1182:		ID =  CG_Argv(1);
CNSTI4 1
ARGI4
ADDRLP4 1388
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 1376
ADDRLP4 1388
INDIRP4
ASGNP4
line 1183
;1183:		holdInt = atoi(ID);
ADDRLP4 1376
INDIRP4
ARGP4
ADDRLP4 1392
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 1380
ADDRLP4 1392
INDIRI4
ASGNI4
line 1185
;1184:
;1185:		memset( &string, 0, sizeof( string ) );
ADDRLP4 164
ARGP4
CNSTI4 0
ARGI4
CNSTI4 1204
ARGI4
ADDRGP4 memset
CALLP4
pop
line 1187
;1186:
;1187:		Com_sprintf( string,sizeof(string)," \"%s\"", (const char *) CG_Argv(2));
CNSTI4 2
ARGI4
ADDRLP4 1396
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 164
ARGP4
CNSTI4 1204
ARGI4
ADDRGP4 $780
ARGP4
ADDRLP4 1396
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1189
;1188:
;1189:		for (i=3;i<count;i++)
ADDRLP4 1368
CNSTI4 3
ASGNI4
ADDRGP4 $784
JUMPV
LABELV $781
line 1190
;1190:		{
line 1191
;1191:			Com_sprintf( string,sizeof(string)," %s \"%s\"", string, (const char *) CG_Argv(i));
ADDRLP4 1368
INDIRI4
ARGI4
ADDRLP4 1400
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 164
ARGP4
CNSTI4 1204
ARGI4
ADDRGP4 $785
ARGP4
ADDRLP4 164
ARGP4
ADDRLP4 1400
INDIRP4
ARGP4
ADDRGP4 Com_sprintf
CALLV
pop
line 1192
;1192:		}
LABELV $782
line 1189
ADDRLP4 1368
ADDRLP4 1368
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
LABELV $784
ADDRLP4 1368
INDIRI4
ADDRLP4 1372
INDIRI4
LTI4 $781
line 1194
;1193:
;1194:		trap_SP_Print(holdInt, (byte *)string);
ADDRLP4 1380
INDIRI4
CVIU4 4
ARGU4
ADDRLP4 164
ARGP4
ADDRGP4 trap_SP_Print
CALLV
pop
line 1195
;1195:		return;
ADDRGP4 $774
JUMPV
LABELV $777
line 1198
;1196:	}
;1197:
;1198:	if ( !strcmp( cmd, "nfr" ) )
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $788
ARGP4
ADDRLP4 164
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 164
INDIRI4
CNSTI4 0
NEI4 $786
line 1199
;1199:	{ //"nfr" == "new force rank" (want a short string)
line 1200
;1200:		int doMenu = 0;
ADDRLP4 168
CNSTI4 0
ASGNI4
line 1201
;1201:		int setTeam = 0;
ADDRLP4 172
CNSTI4 0
ASGNI4
line 1202
;1202:		int newRank = 0;
ADDRLP4 176
CNSTI4 0
ASGNI4
line 1204
;1203:
;1204:		if (trap_Argc() < 3)
ADDRLP4 180
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 180
INDIRI4
CNSTI4 3
GEI4 $789
line 1205
;1205:		{
line 1209
;1206:#ifdef _DEBUG
;1207:			Com_Printf("WARNING: Invalid newForceRank string\n");
;1208:#endif
;1209:			return;
ADDRGP4 $774
JUMPV
LABELV $789
line 1212
;1210:		}
;1211:
;1212:		newRank = atoi(CG_Argv(1));
CNSTI4 1
ARGI4
ADDRLP4 184
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 184
INDIRP4
ARGP4
ADDRLP4 188
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 176
ADDRLP4 188
INDIRI4
ASGNI4
line 1213
;1213:		doMenu = atoi(CG_Argv(2));
CNSTI4 2
ARGI4
ADDRLP4 192
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 192
INDIRP4
ARGP4
ADDRLP4 196
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 168
ADDRLP4 196
INDIRI4
ASGNI4
line 1214
;1214:		setTeam = atoi(CG_Argv(3));
CNSTI4 3
ARGI4
ADDRLP4 200
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 200
INDIRP4
ARGP4
ADDRLP4 204
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 172
ADDRLP4 204
INDIRI4
ASGNI4
line 1216
;1215:
;1216:		trap_Cvar_Set("ui_rankChange", va("%i", newRank));
ADDRGP4 $220
ARGP4
ADDRLP4 176
INDIRI4
ARGI4
ADDRLP4 208
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $791
ARGP4
ADDRLP4 208
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 1218
;1217:
;1218:		trap_Cvar_Set("ui_myteam", va("%i", setTeam));
ADDRGP4 $220
ARGP4
ADDRLP4 172
INDIRI4
ARGI4
ADDRLP4 212
ADDRGP4 va
CALLP4
ASGNP4
ADDRGP4 $792
ARGP4
ADDRLP4 212
INDIRP4
ARGP4
ADDRGP4 trap_Cvar_Set
CALLV
pop
line 1220
;1219:
;1220:		if (!( trap_Key_GetCatcher() & KEYCATCH_UI ) && doMenu)
ADDRLP4 216
ADDRGP4 trap_Key_GetCatcher
CALLI4
ASGNI4
ADDRLP4 220
CNSTI4 0
ASGNI4
ADDRLP4 216
INDIRI4
CNSTI4 2
BANDI4
ADDRLP4 220
INDIRI4
NEI4 $774
ADDRLP4 168
INDIRI4
ADDRLP4 220
INDIRI4
EQI4 $774
line 1221
;1221:		{
line 1222
;1222:			trap_OpenUIMenu(3);
CNSTI4 3
ARGI4
ADDRGP4 trap_OpenUIMenu
CALLV
pop
line 1223
;1223:		}
line 1225
;1224:
;1225:		return;
ADDRGP4 $774
JUMPV
LABELV $786
line 1228
;1226:	}
;1227:
;1228:	if ( !strcmp( cmd, "kg2" ) )
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $797
ARGP4
ADDRLP4 168
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 168
INDIRI4
CNSTI4 0
NEI4 $795
line 1229
;1229:	{ //Kill a ghoul2 instance in this slot.
line 1232
;1230:	  //If it has been occupied since this message was sent somehow, the worst that can (should) happen
;1231:	  //is the instance will have to reinit with its current info.
;1232:		int indexNum = 0;
ADDRLP4 172
CNSTI4 0
ASGNI4
line 1233
;1233:		int argNum = trap_Argc();
ADDRLP4 184
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 180
ADDRLP4 184
INDIRI4
ASGNI4
line 1234
;1234:		int i = 1;
ADDRLP4 176
CNSTI4 1
ASGNI4
line 1236
;1235:		
;1236:		if (argNum < 1)
ADDRLP4 180
INDIRI4
CNSTI4 1
GEI4 $801
line 1237
;1237:		{
line 1238
;1238:			return;
ADDRGP4 $774
JUMPV
LABELV $800
line 1242
;1239:		}
;1240:
;1241:		while (i < argNum)
;1242:		{
line 1243
;1243:			indexNum = atoi(CG_Argv(i));
ADDRLP4 176
INDIRI4
ARGI4
ADDRLP4 188
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 188
INDIRP4
ARGP4
ADDRLP4 192
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 172
ADDRLP4 192
INDIRI4
ASGNI4
line 1245
;1244:
;1245:			if (cg_entities[indexNum].ghoul2 && trap_G2_HaveWeGhoul2Models(cg_entities[indexNum].ghoul2))
ADDRLP4 196
CNSTI4 1920
ADDRLP4 172
INDIRI4
MULI4
ASGNI4
ADDRLP4 196
INDIRI4
ADDRGP4 cg_entities+952
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $803
ADDRLP4 196
INDIRI4
ADDRGP4 cg_entities+952
ADDP4
INDIRP4
ARGP4
ADDRLP4 200
ADDRGP4 trap_G2_HaveWeGhoul2Models
CALLI4
ASGNI4
ADDRLP4 200
INDIRI4
CNSTI4 0
EQI4 $803
line 1246
;1246:			{
line 1247
;1247:				if (indexNum < MAX_CLIENTS)
ADDRLP4 172
INDIRI4
CNSTI4 32
GEI4 $807
line 1248
;1248:				{ //You try to do very bad thing!
line 1252
;1249:#ifdef _DEBUG
;1250:					Com_Printf("WARNING: Tried to kill a client ghoul2 instance with a kg2 command!\n");
;1251:#endif
;1252:					return;
ADDRGP4 $774
JUMPV
LABELV $807
line 1254
;1253:				}
;1254:				trap_G2API_CleanGhoul2Models(&(cg_entities[indexNum].ghoul2));
CNSTI4 1920
ADDRLP4 172
INDIRI4
MULI4
ADDRGP4 cg_entities+952
ADDP4
ARGP4
ADDRGP4 trap_G2API_CleanGhoul2Models
CALLV
pop
line 1255
;1255:			}
LABELV $803
line 1257
;1256:
;1257:			i++;
ADDRLP4 176
ADDRLP4 176
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1258
;1258:		}
LABELV $801
line 1241
ADDRLP4 176
INDIRI4
ADDRLP4 180
INDIRI4
LTI4 $800
line 1260
;1259:		
;1260:		return;
ADDRGP4 $774
JUMPV
LABELV $795
line 1263
;1261:	}
;1262:
;1263:	if ( !strcmp( cmd, "cp" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $812
ARGP4
ADDRLP4 172
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 172
INDIRI4
CNSTI4 0
NEI4 $810
line 1265
;1264:		char strEd[MAX_STRIPED_SV_STRING];
;1265:		CG_CheckSVStripEdRef(strEd, CG_Argv(1));
CNSTI4 1
ARGI4
ADDRLP4 1200
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 176
ARGP4
ADDRLP4 1200
INDIRP4
ARGP4
ADDRGP4 CG_CheckSVStripEdRef
CALLV
pop
line 1266
;1266:		CG_CenterPrint( strEd, SCREEN_HEIGHT * 0.30, BIGCHAR_WIDTH );
ADDRLP4 176
ARGP4
CNSTI4 144
ARGI4
CNSTI4 16
ARGI4
ADDRGP4 CG_CenterPrint
CALLV
pop
line 1267
;1267:		return;
ADDRGP4 $774
JUMPV
LABELV $810
line 1270
;1268:	}
;1269:
;1270:	if ( !strcmp( cmd, "cs" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $815
ARGP4
ADDRLP4 176
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 176
INDIRI4
CNSTI4 0
NEI4 $813
line 1271
;1271:		CG_ConfigStringModified();
ADDRGP4 CG_ConfigStringModified
CALLV
pop
line 1272
;1272:		return;
ADDRGP4 $774
JUMPV
LABELV $813
line 1275
;1273:	}
;1274:
;1275:	if ( !strcmp( cmd, "print" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $818
ARGP4
ADDRLP4 180
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 180
INDIRI4
CNSTI4 0
NEI4 $816
line 1277
;1276:		char strEd[MAX_STRIPED_SV_STRING];
;1277:		CG_CheckSVStripEdRef(strEd, CG_Argv(1));
CNSTI4 1
ARGI4
ADDRLP4 1208
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 184
ARGP4
ADDRLP4 1208
INDIRP4
ARGP4
ADDRGP4 CG_CheckSVStripEdRef
CALLV
pop
line 1278
;1278:		CG_Printf( "%s", strEd );
ADDRGP4 $548
ARGP4
ADDRLP4 184
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1279
;1279:		return;
ADDRGP4 $774
JUMPV
LABELV $816
line 1282
;1280:	}
;1281:
;1282:	if ( !strcmp( cmd, "chat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $821
ARGP4
ADDRLP4 184
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 184
INDIRI4
CNSTI4 0
NEI4 $819
line 1283
;1283:		if ( !cg_teamChatsOnly.integer ) {
ADDRGP4 cg_teamChatsOnly+12
INDIRI4
CNSTI4 0
NEI4 $774
line 1284
;1284:			trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
ADDRGP4 cgs+70296+708
INDIRI4
ARGI4
CNSTI4 6
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 1285
;1285:			Q_strncpyz( text, CG_Argv(1), MAX_SAY_TEXT );
CNSTI4 1
ARGI4
ADDRLP4 188
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 4
ARGP4
ADDRLP4 188
INDIRP4
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 1286
;1286:			CG_RemoveChatEscapeChar( text );
ADDRLP4 4
ARGP4
ADDRGP4 CG_RemoveChatEscapeChar
CALLV
pop
line 1287
;1287:			CG_Printf( "%s\n", text );
ADDRGP4 $656
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1288
;1288:		}
line 1289
;1289:		return;
ADDRGP4 $774
JUMPV
LABELV $819
line 1292
;1290:	}
;1291:
;1292:	if ( !strcmp( cmd, "tchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $829
ARGP4
ADDRLP4 188
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 188
INDIRI4
CNSTI4 0
NEI4 $827
line 1293
;1293:		trap_S_StartLocalSound( cgs.media.talkSound, CHAN_LOCAL_SOUND );
ADDRGP4 cgs+70296+708
INDIRI4
ARGI4
CNSTI4 6
ARGI4
ADDRGP4 trap_S_StartLocalSound
CALLV
pop
line 1294
;1294:		Q_strncpyz( text, CG_Argv(1), MAX_SAY_TEXT );
CNSTI4 1
ARGI4
ADDRLP4 192
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 4
ARGP4
ADDRLP4 192
INDIRP4
ARGP4
CNSTI4 150
ARGI4
ADDRGP4 Q_strncpyz
CALLV
pop
line 1295
;1295:		CG_RemoveChatEscapeChar( text );
ADDRLP4 4
ARGP4
ADDRGP4 CG_RemoveChatEscapeChar
CALLV
pop
line 1296
;1296:		CG_AddToTeamChat( text );
ADDRLP4 4
ARGP4
ADDRGP4 CG_AddToTeamChat
CALLV
pop
line 1297
;1297:		CG_Printf( "%s\n", text );
ADDRGP4 $656
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1298
;1298:		return;
ADDRGP4 $774
JUMPV
LABELV $827
line 1300
;1299:	}
;1300:	if ( !strcmp( cmd, "vchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $834
ARGP4
ADDRLP4 192
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 192
INDIRI4
CNSTI4 0
NEI4 $832
line 1301
;1301:		CG_VoiceChat( SAY_ALL );
CNSTI4 0
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1302
;1302:		return;
ADDRGP4 $774
JUMPV
LABELV $832
line 1305
;1303:	}
;1304:
;1305:	if ( !strcmp( cmd, "vtchat" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $837
ARGP4
ADDRLP4 196
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 196
INDIRI4
CNSTI4 0
NEI4 $835
line 1306
;1306:		CG_VoiceChat( SAY_TEAM );
CNSTI4 1
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1307
;1307:		return;
ADDRGP4 $774
JUMPV
LABELV $835
line 1310
;1308:	}
;1309:
;1310:	if ( !strcmp( cmd, "vtell" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $840
ARGP4
ADDRLP4 200
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 200
INDIRI4
CNSTI4 0
NEI4 $838
line 1311
;1311:		CG_VoiceChat( SAY_TELL );
CNSTI4 2
ARGI4
ADDRGP4 CG_VoiceChat
CALLV
pop
line 1312
;1312:		return;
ADDRGP4 $774
JUMPV
LABELV $838
line 1315
;1313:	}
;1314:
;1315:	if ( !strcmp( cmd, "scores" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $843
ARGP4
ADDRLP4 204
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 204
INDIRI4
CNSTI4 0
NEI4 $841
line 1316
;1316:		CG_ParseScores();
ADDRGP4 CG_ParseScores
CALLV
pop
line 1317
;1317:		return;
ADDRGP4 $774
JUMPV
LABELV $841
line 1320
;1318:	}
;1319:
;1320:	if ( !strcmp( cmd, "tinfo" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $846
ARGP4
ADDRLP4 208
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 208
INDIRI4
CNSTI4 0
NEI4 $844
line 1321
;1321:		CG_ParseTeamInfo();
ADDRGP4 CG_ParseTeamInfo
CALLV
pop
line 1322
;1322:		return;
ADDRGP4 $774
JUMPV
LABELV $844
line 1325
;1323:	}
;1324:
;1325:	if ( !strcmp( cmd, "map_restart" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $849
ARGP4
ADDRLP4 212
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 212
INDIRI4
CNSTI4 0
NEI4 $847
line 1326
;1326:		CG_MapRestart();
ADDRGP4 CG_MapRestart
CALLV
pop
line 1327
;1327:		return;
ADDRGP4 $774
JUMPV
LABELV $847
line 1330
;1328:	}
;1329:
;1330:  if ( Q_stricmp (cmd, "remapShader") == 0 ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $852
ARGP4
ADDRLP4 216
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 216
INDIRI4
CNSTI4 0
NEI4 $850
line 1331
;1331:		if (trap_Argc() == 4) {
ADDRLP4 220
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 220
INDIRI4
CNSTI4 4
NEI4 $853
line 1332
;1332:			trap_R_RemapShader(CG_Argv(1), CG_Argv(2), CG_Argv(3));
CNSTI4 1
ARGI4
ADDRLP4 224
ADDRGP4 CG_Argv
CALLP4
ASGNP4
CNSTI4 2
ARGI4
ADDRLP4 228
ADDRGP4 CG_Argv
CALLP4
ASGNP4
CNSTI4 3
ARGI4
ADDRLP4 232
ADDRGP4 CG_Argv
CALLP4
ASGNP4
ADDRLP4 224
INDIRP4
ARGP4
ADDRLP4 228
INDIRP4
ARGP4
ADDRLP4 232
INDIRP4
ARGP4
ADDRGP4 trap_R_RemapShader
CALLV
pop
line 1333
;1333:		}
LABELV $853
line 1334
;1334:	}
LABELV $850
line 1337
;1335:
;1336:	// loaddeferred can be both a servercmd and a consolecmd
;1337:	if ( !strcmp( cmd, "loaddefered" ) ) {	// FIXME: spelled wrong, but not changing for demo
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $857
ARGP4
ADDRLP4 220
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 220
INDIRI4
CNSTI4 0
NEI4 $855
line 1338
;1338:		CG_LoadDeferredPlayers();
ADDRGP4 CG_LoadDeferredPlayers
CALLV
pop
line 1339
;1339:		return;
ADDRGP4 $774
JUMPV
LABELV $855
line 1344
;1340:	}
;1341:
;1342:	// clientLevelShot is sent before taking a special screenshot for
;1343:	// the menu system during development
;1344:	if ( !strcmp( cmd, "clientLevelShot" ) ) {
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 $860
ARGP4
ADDRLP4 224
ADDRGP4 strcmp
CALLI4
ASGNI4
ADDRLP4 224
INDIRI4
CNSTI4 0
NEI4 $858
line 1345
;1345:		cg.levelShot = qtrue;
ADDRGP4 cg+12
CNSTI4 1
ASGNI4
line 1346
;1346:		return;
ADDRGP4 $774
JUMPV
LABELV $858
line 1349
;1347:	}
;1348:
;1349:	CG_Printf( "Unknown client game command: %s\n", cmd );
ADDRGP4 $862
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 CG_Printf
CALLV
pop
line 1350
;1350:}
LABELV $774
endproc CG_ServerCommand 1404 20
export CG_ExecuteNewServerCommands
proc CG_ExecuteNewServerCommands 12 4
line 1361
;1351:
;1352:
;1353:/*
;1354:====================
;1355:CG_ExecuteNewServerCommands
;1356:
;1357:Execute all of the server commands that were received along
;1358:with this this snapshot.
;1359:====================
;1360:*/
;1361:void CG_ExecuteNewServerCommands( int latestSequence ) {
ADDRGP4 $865
JUMPV
LABELV $864
line 1362
;1362:	while ( cgs.serverCommandSequence < latestSequence ) {
line 1363
;1363:		if ( trap_GetServerCommand( ++cgs.serverCommandSequence ) ) {
ADDRLP4 0
ADDRGP4 cgs+32948
ASGNP4
ADDRLP4 4
ADDRLP4 0
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 4
INDIRI4
ASGNI4
ADDRLP4 4
INDIRI4
ARGI4
ADDRLP4 8
ADDRGP4 trap_GetServerCommand
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $868
line 1364
;1364:			CG_ServerCommand();
ADDRGP4 CG_ServerCommand
CALLV
pop
line 1365
;1365:		}
LABELV $868
line 1366
;1366:	}
LABELV $865
line 1362
ADDRGP4 cgs+32948
INDIRI4
ADDRFP4 0
INDIRI4
LTI4 $864
line 1367
;1367:}
LABELV $863
endproc CG_ExecuteNewServerCommands 12 4
bss
export voiceChatBuffer
align 4
LABELV voiceChatBuffer
skip 9984
export voiceChatLists
align 4
LABELV voiceChatLists
skip 2263616
import CG_LoadClientInfo
import CG_SetLightstyle
import CG_RunLightStyles
import CG_ClearLightStyles
import g2WeaponInstances
import CG_CheckPlayerG2Weapons
import CG_CopyG2WeaponInstance
import CG_ShutDownG2Weapons
import CG_InitG2Weapons
import CG_CreateBBRefEnts
import CG_SetGhoul2Info
import CG_Init_CGents
import CG_Init_CG
import trap_G2API_SetNewOrigin
import trap_G2API_SetSurfaceOnOff
import trap_G2API_SetRootSurface
import trap_G2API_SetBoneAnim
import trap_G2API_GetGLAName
import trap_G2API_SetBoneAngles
import trap_G2API_CleanGhoul2Models
import trap_G2API_SetBoltInfo
import trap_G2API_AddBolt
import trap_G2API_RemoveGhoul2Model
import trap_G2API_HasGhoul2ModelOnIndex
import trap_G2API_DuplicateGhoul2Instance
import trap_G2API_CopySpecificGhoul2Model
import trap_G2API_CopyGhoul2Instance
import trap_G2API_GiveMeVectorFromMatrix
import trap_G2API_InitGhoul2Model
import trap_G2API_GetBoltMatrix_NoRecNoRot
import trap_G2API_GetBoltMatrix_NoReconstruct
import trap_G2API_GetBoltMatrix
import trap_G2_HaveWeGhoul2Models
import trap_G2_SetGhoul2ModelIndexes
import trap_G2_ListModelBones
import trap_G2_ListModelSurfaces
import trap_G2API_CollisionDetect
import FX_ForceDrained
import FX_BlasterWeaponHitPlayer
import FX_BlasterWeaponHitWall
import FX_BlasterAltFireThink
import FX_BlasterProjectileThink
import FX_BryarAltHitPlayer
import FX_BryarHitPlayer
import FX_BryarAltHitWall
import FX_BryarHitWall
import CG_Spark
import FX_TurretHitPlayer
import FX_TurretHitWall
import FX_TurretProjectileThink
import CG_NewParticleArea
import initparticles
import CG_GetStripEdString
import CG_ParticleExplosion
import CG_ParticleMisc
import CG_ParticleDust
import CG_ParticleSparks
import CG_ParticleBulletDebris
import CG_ParticleSnowFlurry
import CG_AddParticleShrapnel
import CG_ParticleSmoke
import CG_ParticleSnow
import CG_AddParticles
import CG_ClearParticles
import trap_ROFF_Purge_Ent
import trap_ROFF_Play
import trap_ROFF_Cache
import trap_ROFF_UpdateEntities
import trap_ROFF_Clean
import trap_CG_RegisterSharedMemory
import trap_SP_GetStringTextString
import trap_SP_Print
import trap_FX_AddSprite
import trap_FX_AddPrimitive
import trap_FX_AddBezier
import trap_FX_AddPoly
import trap_FX_AdjustTime
import trap_FX_FreeSystem
import trap_FX_InitSystem
import trap_FX_AddScheduledEffects
import trap_FX_PlayBoltedEffectID
import trap_FX_PlayEntityEffectID
import trap_FX_PlayEffectID
import trap_FX_PlaySimpleEffectID
import trap_FX_PlayEntityEffect
import trap_FX_PlayEffect
import trap_FX_PlaySimpleEffect
import trap_FX_RegisterEffect
import trap_R_inPVS
import trap_GetEntityToken
import trap_getCameraInfo
import trap_startCamera
import trap_loadCamera
import trap_SnapVector
import trap_CIN_SetExtents
import trap_CIN_DrawCinematic
import trap_CIN_RunCinematic
import trap_CIN_StopCinematic
import trap_CIN_PlayCinematic
import BG_CycleForce
import BG_ProperForceIndex
import BG_CycleInven
import trap_Key_GetKey
import trap_Key_SetCatcher
import trap_Key_GetCatcher
import trap_Key_IsDown
import trap_MemoryRemaining
import testPrintFloat
import testPrintInt
import trap_OpenUIMenu
import trap_SetClientTurnExtent
import trap_SetClientForceAngle
import trap_SetUserCmdValue
import trap_GetUserCmd
import trap_GetCurrentCmdNumber
import trap_GetServerCommand
import trap_GetSnapshot
import trap_GetCurrentSnapshotNumber
import trap_GetGameState
import trap_GetGlconfig
import trap_FX_AddLine
import trap_R_GetBModelVerts
import trap_R_SetLightStyle
import trap_R_GetLightStyle
import trap_R_RemapShader
import trap_R_DrawRotatePic2
import trap_R_DrawRotatePic
import trap_R_LerpTag
import trap_R_ModelBounds
import trap_R_DrawStretchPic
import trap_R_SetColor
import trap_R_RenderScene
import trap_R_LightForPoint
import trap_R_AddLightToScene
import trap_R_AddPolysToScene
import trap_R_AddPolyToScene
import trap_R_AddRefEntityToScene
import trap_R_ClearScene
import trap_AnyLanguage_ReadCharFromString
import trap_Language_UsesSpaces
import trap_Language_IsAsian
import trap_R_Font_DrawString
import trap_R_Font_HeightPixels
import trap_R_Font_StrLenChars
import trap_R_Font_StrLenPixels
import trap_R_RegisterFont
import trap_R_RegisterShaderNoMip
import trap_R_RegisterShader
import trap_R_RegisterSkin
import trap_R_RegisterModel
import trap_R_LoadWorldMap
import trap_S_StopBackgroundTrack
import trap_S_StartBackgroundTrack
import trap_S_RegisterSound
import trap_S_Respatialize
import trap_S_UpdateEntityPosition
import trap_S_AddRealLoopingSound
import trap_S_AddLoopingSound
import trap_S_ClearLoopingSounds
import trap_S_StartLocalSound
import trap_S_StopLoopingSound
import trap_S_StartSound
import trap_S_MuteSound
import trap_CM_MarkFragments
import trap_CM_TransformedBoxTrace
import trap_CM_BoxTrace
import trap_CM_TransformedPointContents
import trap_CM_PointContents
import trap_CM_TempBoxModel
import trap_CM_InlineModel
import trap_CM_NumInlineModels
import trap_CM_LoadMap
import trap_UpdateScreen
import trap_SendClientCommand
import trap_AddCommand
import trap_SendConsoleCommand
import trap_FS_FCloseFile
import trap_FS_Write
import trap_FS_Read
import trap_FS_FOpenFile
import trap_Args
import trap_Argv
import trap_Argc
import trap_Cvar_VariableStringBuffer
import trap_Cvar_Set
import trap_Cvar_Update
import trap_Cvar_Register
import trap_Milliseconds
import trap_Error
import trap_Print
import CG_SagaObjectiveCompleted
import CG_SagaRoundOver
import CG_InitSagaMode
import CG_CheckChangedPredictableEvents
import CG_TransitionPlayerState
import CG_Respawn
import CG_IsMindTricked
import CG_InitConsoleCommands
import CG_ConsoleCommand
import CG_DrawOldTourneyScoreboard
import CG_DrawOldScoreboard
import CG_DrawInformation
import CG_LoadingClient
import CG_LoadingItem
import CG_LoadingString
import CG_ProcessSnapshots
import CG_InitGlass
import CG_TestLine
import CG_SurfaceExplosion
import CG_MakeExplosion
import CG_Bleed
import CG_ScorePlum
import CG_CreateDebris
import CG_GlassShatter
import CG_BubbleTrail
import CG_SmokePuff
import CG_AddLocalEntities
import CG_AllocLocalEntity
import CG_InitLocalEntities
import CG_ImpactMark
import CG_AddMarks
import CG_InitMarkPolys
import CG_OutOfAmmoChange
import CG_DrawIconBackground
import CG_DrawWeaponSelect
import CG_AddPlayerWeapon
import CG_AddViewWeapon
import CG_MissileHitPlayer
import CG_MissileHitWall
import CG_FireWeapon
import CG_RegisterItemVisuals
import CG_RegisterWeapon
import CG_Weapon_f
import CG_PrevWeapon_f
import CG_NextWeapon_f
import CG_GetClientWeaponMuzzleBoltPoint
import TurretClientRun
import ScaleModelAxis
import CG_PositionRotatedEntityOnTag
import CG_PositionEntityOnTag
import CG_AdjustPositionForMover
import CG_Beam
import CG_ManualEntityRender
import CG_AddPacketEntities
import CG_SetEntitySoundPosition
import CG_ReattachLimb
import CG_PainEvent
import CG_EntityEvent
import CG_PlaceString
import CG_CheckEvents
import CG_LoadDeferredPlayers
import CG_PredictPlayerState
import CG_Trace
import CG_PointContents
import CG_BuildSolidList
import CG_PlayerShieldHit
import CG_CustomSound
import CG_NewClientInfo
import CG_AddRefEntityWithPowerups
import CG_ResetPlayerEntity
import CG_Player
import CG_StatusHandle
import CG_OtherTeamHasFlag
import CG_YourTeamHasFlag
import CG_GameTypeString
import CG_CheckOrderPending
import CG_Text_PaintChar
import CG_Draw3DModel
import CG_GetKillerText
import CG_GetGameStatusText
import CG_GetTeamColor
import CG_InitTeamChat
import CG_SetPrintString
import CG_ShowResponseHead
import CG_DeferMenuScript
import CG_RunMenuScript
import CG_OwnerDrawVisible
import CG_GetValue
import CG_SelectNextPlayer
import CG_SelectPrevPlayer
import CG_Text_Height
import CG_Text_Width
import CG_Text_Paint
import CG_OwnerDraw
import CG_DrawTeamBackground
import CG_DrawFlagModel
import CG_DrawActive
import CG_DrawHead
import CG_CenterPrint
import CG_AddLagometerSnapshotInfo
import CG_AddLagometerFrameInfo
import teamChat2
import teamChat1
import systemChat
import drawTeamOverlayModificationCount
import numSortedTeamPlayers
import sortedTeamPlayers
import CG_DrawTopBottom
import CG_DrawSides
import CG_DrawRect
import UI_DrawScaledProportionalString
import UI_DrawProportionalString
import CG_GetColorForHealth
import CG_ColorForHealth
import CG_TileClear
import CG_TeamColor
import CG_FadeColor
import CG_DrawStrlen
import CG_DrawSmallStringColor
import CG_DrawSmallString
import CG_DrawBigStringColor
import CG_DrawBigString
import CG_DrawStringExt
import CG_DrawNumField
import CG_DrawString
import CG_DrawRotatePic2
import CG_DrawRotatePic
import CG_DrawPic
import CG_FillRect
import CG_TestModelAnimate_f
import CG_TestModelSetAnglespost_f
import CG_TestModelSetAnglespre_f
import CG_ListModelBones_f
import CG_ListModelSurfaces_f
import CG_TestModelSurfaceOnOff_f
import CG_TestG2Model_f
import CG_DrawActiveFrame
import CG_AddBufferedSound
import CG_ZoomUp_f
import CG_ZoomDown_f
import CG_TestModelPrevSkin_f
import CG_TestModelNextSkin_f
import CG_TestModelPrevFrame_f
import CG_TestModelNextFrame_f
import CG_TestGun_f
import CG_TestModel_f
import CG_PrevForcePower_f
import CG_NextForcePower_f
import CG_PrevInventory_f
import CG_NextInventory_f
import CG_BuildSpectatorString
import CG_SetScoreSelection
import CG_RankRunFrame
import CG_EventHandling
import CG_MouseEvent
import CG_KeyEvent
import CG_LoadMenus
import CG_LastAttacker
import CG_CrosshairPlayer
import CG_UpdateCvars
import CG_StartMusic
import CG_Error
import CG_Printf
import CG_Argv
import CG_ConfigString
import cg_debugBB
import ui_myteam
import cg_recordSPDemoName
import cg_recordSPDemo
import cg_singlePlayerActive
import cg_enableBreath
import cg_enableDust
import cg_singlePlayer
import cg_currentSelectedPlayerName
import cg_currentSelectedPlayer
import cg_blueTeamName
import cg_redTeamName
import cg_trueLightning
import cg_noProjectileTrail
import cg_noTaunt
import cg_bigFont
import cg_smallFont
import cg_cameraMode
import cg_timescale
import cg_timescaleFadeSpeed
import cg_timescaleFadeEnd
import cg_cameraOrbitDelay
import cg_cameraOrbit
import pmove_msec
import pmove_fixed
import cg_smoothClients
import cg_hudFiles
import cg_scorePlum
import cg_noVoiceText
import cg_noVoiceChats
import cg_teamChatsOnly
import cg_drawFriend
import cg_deferPlayers
import cg_predictItems
import cg_blood
import cg_paused
import cg_buildScript
import cg_forceModel
import cg_stats
import cg_teamChatHeight
import cg_teamChatTime
import cg_synchronousClients
import cg_drawEnemyInfo
import cg_lagometer
import cg_stereoSeparation
import cg_thirdPersonHorzOffset
import cg_thirdPersonAlpha
import cg_thirdPersonTargetDamp
import cg_thirdPersonCameraDamp
import cg_thirdPersonVertOffset
import cg_thirdPersonPitchOffset
import cg_thirdPersonAngle
import cg_thirdPersonRange
import cg_thirdPerson
import cg_dismember
import cg_animBlend
import cg_auraShell
import cg_speedTrail
import cg_duelHeadAngles
import cg_saberTrail
import cg_saberContact
import cg_saberDynamicMarkTime
import cg_saberDynamicMarks
import cg_fpls
import cg_saberModelTraceEffect
import cg_oldPainSounds
import cg_swingAngles
import cg_zoomFov
import cg_fov
import cg_simpleItems
import cg_ignore
import cg_autoswitch
import cg_tracerLength
import cg_tracerWidth
import cg_tracerChance
import cg_viewsize
import cg_drawGun
import cg_gun_z
import cg_gun_y
import cg_gun_x
import cg_gun_frame
import cg_addMarks
import cg_footsteps
import cg_showmiss
import cg_noPlayerAnims
import cg_nopredict
import cg_errorDecay
import cg_debugEvents
import cg_debugPosition
import cg_debugAnim
import cg_animSpeed
import cg_draw2D
import cg_drawStatus
import cg_crosshairHealth
import cg_crosshairSize
import cg_crosshairY
import cg_crosshairX
import cg_teamOverlayUserinfo
import cg_drawTeamOverlay
import cg_drawRewards
import cg_dynamicCrosshair
import cg_drawScores
import cg_drawCrosshairNames
import cg_drawCrosshair
import cg_drawAmmoWarning
import cg_drawIcons
import cg_draw3dIcons
import cg_drawSnapshot
import cg_drawFPS
import cg_drawTimer
import cg_shadows
import cg_bobroll
import cg_bobpitch
import cg_bobup
import cg_runroll
import cg_runpitch
import cg_centertime
import cg_markPolys
import cg_items
import cg_weapons
import cg_entities
import cg
import cgs
import CGCam_SetMusicMult
import CGCam_Shake
import cgScreenEffects
import ammoTicPos
import forceTicPos
import forcePowerDarkLight
import WeaponAttackAnim
import WeaponReadyAnim
import BG_OutOfMemory
import BG_StringAlloc
import BG_TempFree
import BG_TempAlloc
import BG_AllocUnaligned
import BG_Alloc
import BG_CanUseFPNow
import BG_HasYsalamiri
import BG_GetItemIndexByTag
import BG_ParseAnimationFile
import BG_PlayerTouchesItem
import BG_PlayerStateToEntityStateExtraPolate
import BG_PlayerStateToEntityState
import BG_TouchJumpPad
import BG_AddPredictableEventToPlayerstate
import BG_EvaluateTrajectoryDelta
import BG_EvaluateTrajectory
import BG_ForcePowerDrain
import BG_SaberStartTransAnim
import BG_InDeathAnim
import BG_InRoll
import BG_KnockawayForParry
import BG_BrokenParryForParry
import BG_BrokenParryForAttack
import BG_SaberInSpecialAttack
import BG_SpinningSaberAnim
import BG_FlippingAnim
import BG_SaberInIdle
import BG_SaberInSpecial
import BG_SaberInAttack
import BG_DirectFlippingAnim
import BG_InSaberStandAnim
import BG_InSpecialJump
import BG_LegalizedForcePowers
import saberMoveData
import BG_CanItemBeGrabbed
import BG_FindItemForHoldable
import BG_FindItemForPowerup
import BG_FindItemForWeapon
import BG_FindItem
import vectoyaw
import bg_numItems
import bg_itemlist
import Pmove
import PM_UpdateViewAngles
import pm
import bgForcePowerCost
import forceMasteryPoints
import forceMasteryLevels
import bgGlobalAnimations
import BGPAFtextLoaded
import forcePowerSorted
import WP_MuzzlePoint
import ammoData
import weaponData
import GetStringForID
import GetIDForString
import Q_irand
import irand
import flrand
import Rand_Init
import Com_Printf
import Com_Error
import Info_NextPair
import Info_Validate
import Info_SetValueForKey_Big
import Info_SetValueForKey
import Info_RemoveKey_big
import Info_RemoveKey
import Info_ValueForKey
import va
import Q_CleanStr
import Q_PrintStrlen
import Q_strcat
import Q_strncpyz
import Q_strrchr
import Q_strupr
import Q_strlwr
import Q_stricmpn
import Q_strncmp
import Q_stricmp
import Q_isalpha
import Q_isupper
import Q_islower
import Q_isprint
import Com_sprintf
import Parse3DMatrix
import Parse2DMatrix
import Parse1DMatrix
import SkipRestOfLine
import SkipBracedSection
import COM_MatchToken
import COM_ParseVec4
import COM_ParseFloat
import COM_ParseInt
import COM_ParseString
import COM_ParseWarning
import COM_ParseError
import COM_Compress
import COM_ParseExt
import COM_Parse
import SkipWhitespace
import COM_GetCurrentParseLine
import COM_BeginParseSession
import COM_DefaultExtension
import COM_StripExtension
import COM_SkipPath
import Com_Clamp
import PerpendicularVector
import AngleVectors
import MatrixMultiply
import MakeNormalVectors
import RotateAroundDirection
import RotatePointAroundVector
import ProjectPointOnPlane
import PlaneFromPoints
import AngleDelta
import AngleNormalize180
import AngleNormalize360
import AnglesSubtract
import AngleSubtract
import LerpAngle
import AngleMod
import BoxOnPlaneSide
import SetPlaneSignbits
import AxisCopy
import AxisClear
import AnglesToAxis
import vectoangles
import Q_crandom
import Q_random
import Q_rand
import Q_acos
import Q_log2
import VectorRotate
import Vector4Scale
import VectorNormalize2
import VectorNormalize
import CrossProduct
import VectorInverse
import VectorNormalizeFast
import DistanceSquared
import Distance
import VectorLengthSquared
import VectorLength
import VectorCompare
import AddPointToBounds
import ClearBounds
import RadiusFromBounds
import NormalizeColor
import ColorBytes4
import ColorBytes3
import _VectorMA
import _VectorScale
import _VectorCopy
import _VectorAdd
import _VectorSubtract
import _DotProduct
import ByteToDir
import DirToByte
import powf
import ClampShort
import ClampChar
import Q_rsqrt
import Q_fabs
import axisDefault
import vec3_origin
import g_color_table
import colorDkBlue
import colorLtBlue
import colorDkGrey
import colorMdGrey
import colorLtGrey
import colorWhite
import colorCyan
import colorMagenta
import colorYellow
import colorBlue
import colorGreen
import colorRed
import colorBlack
import colorTable
import bytedirs
import Com_Memcpy
import Com_Memset
import Hunk_Alloc
import forceSpeedLevels
import FloatSwap
import LongSwap
import ShortSwap
import acos
import fabs
import abs
import tan
import atan2
import cos
import sin
import sqrt
import floor
import ceil
import memcpy
import memset
import memmove
import sscanf
import vsprintf
import _atoi
import atoi
import _atof
import atof
import toupper
import tolower
import strncpy
import strstr
import strchr
import strcmp
import strcpy
import strcat
import strlen
import rand
import srand
import qsort
lit
align 1
LABELV $862
char 1 85
char 1 110
char 1 107
char 1 110
char 1 111
char 1 119
char 1 110
char 1 32
char 1 99
char 1 108
char 1 105
char 1 101
char 1 110
char 1 116
char 1 32
char 1 103
char 1 97
char 1 109
char 1 101
char 1 32
char 1 99
char 1 111
char 1 109
char 1 109
char 1 97
char 1 110
char 1 100
char 1 58
char 1 32
char 1 37
char 1 115
char 1 10
char 1 0
align 1
LABELV $860
char 1 99
char 1 108
char 1 105
char 1 101
char 1 110
char 1 116
char 1 76
char 1 101
char 1 118
char 1 101
char 1 108
char 1 83
char 1 104
char 1 111
char 1 116
char 1 0
align 1
LABELV $857
char 1 108
char 1 111
char 1 97
char 1 100
char 1 100
char 1 101
char 1 102
char 1 101
char 1 114
char 1 101
char 1 100
char 1 0
align 1
LABELV $852
char 1 114
char 1 101
char 1 109
char 1 97
char 1 112
char 1 83
char 1 104
char 1 97
char 1 100
char 1 101
char 1 114
char 1 0
align 1
LABELV $849
char 1 109
char 1 97
char 1 112
char 1 95
char 1 114
char 1 101
char 1 115
char 1 116
char 1 97
char 1 114
char 1 116
char 1 0
align 1
LABELV $846
char 1 116
char 1 105
char 1 110
char 1 102
char 1 111
char 1 0
align 1
LABELV $843
char 1 115
char 1 99
char 1 111
char 1 114
char 1 101
char 1 115
char 1 0
align 1
LABELV $840
char 1 118
char 1 116
char 1 101
char 1 108
char 1 108
char 1 0
align 1
LABELV $837
char 1 118
char 1 116
char 1 99
char 1 104
char 1 97
char 1 116
char 1 0
align 1
LABELV $834
char 1 118
char 1 99
char 1 104
char 1 97
char 1 116
char 1 0
align 1
LABELV $829
char 1 116
char 1 99
char 1 104
char 1 97
char 1 116
char 1 0
align 1
LABELV $821
char 1 99
char 1 104
char 1 97
char 1 116
char 1 0
align 1
LABELV $818
char 1 112
char 1 114
char 1 105
char 1 110
char 1 116
char 1 0
align 1
LABELV $815
char 1 99
char 1 115
char 1 0
align 1
LABELV $812
char 1 99
char 1 112
char 1 0
align 1
LABELV $797
char 1 107
char 1 103
char 1 50
char 1 0
align 1
LABELV $792
char 1 117
char 1 105
char 1 95
char 1 109
char 1 121
char 1 116
char 1 101
char 1 97
char 1 109
char 1 0
align 1
LABELV $791
char 1 117
char 1 105
char 1 95
char 1 114
char 1 97
char 1 110
char 1 107
char 1 67
char 1 104
char 1 97
char 1 110
char 1 103
char 1 101
char 1 0
align 1
LABELV $788
char 1 110
char 1 102
char 1 114
char 1 0
align 1
LABELV $785
char 1 32
char 1 37
char 1 115
char 1 32
char 1 34
char 1 37
char 1 115
char 1 34
char 1 0
align 1
LABELV $780
char 1 32
char 1 34
char 1 37
char 1 115
char 1 34
char 1 0
align 1
LABELV $779
char 1 115
char 1 112
char 1 100
char 1 0
align 1
LABELV $730
char 1 112
char 1 114
char 1 97
char 1 105
char 1 115
char 1 101
char 1 0
align 1
LABELV $729
char 1 107
char 1 105
char 1 108
char 1 108
char 1 95
char 1 103
char 1 97
char 1 117
char 1 110
char 1 116
char 1 108
char 1 101
char 1 116
char 1 0
align 1
LABELV $728
char 1 100
char 1 101
char 1 97
char 1 116
char 1 104
char 1 95
char 1 105
char 1 110
char 1 115
char 1 117
char 1 108
char 1 116
char 1 0
align 1
LABELV $727
char 1 116
char 1 97
char 1 117
char 1 110
char 1 116
char 1 0
align 1
LABELV $726
char 1 107
char 1 105
char 1 108
char 1 108
char 1 95
char 1 105
char 1 110
char 1 115
char 1 117
char 1 108
char 1 116
char 1 0
align 1
LABELV $719
char 1 37
char 1 115
char 1 58
char 1 32
char 1 37
char 1 99
char 1 37
char 1 99
char 1 37
char 1 115
char 1 0
align 1
LABELV $716
char 1 40
char 1 37
char 1 115
char 1 41
char 1 58
char 1 32
char 1 37
char 1 99
char 1 37
char 1 99
char 1 37
char 1 115
char 1 0
align 1
LABELV $711
char 1 91
char 1 37
char 1 115
char 1 93
char 1 58
char 1 32
char 1 37
char 1 99
char 1 37
char 1 99
char 1 37
char 1 115
char 1 0
align 1
LABELV $656
char 1 37
char 1 115
char 1 10
char 1 0
align 1
LABELV $608
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 32
char 1 99
char 1 104
char 1 97
char 1 116
char 1 32
char 1 109
char 1 101
char 1 109
char 1 111
char 1 114
char 1 121
char 1 32
char 1 115
char 1 105
char 1 122
char 1 101
char 1 32
char 1 61
char 1 32
char 1 37
char 1 100
char 1 10
char 1 0
align 1
LABELV $606
char 1 115
char 1 99
char 1 114
char 1 105
char 1 112
char 1 116
char 1 115
char 1 47
char 1 109
char 1 97
char 1 108
char 1 101
char 1 53
char 1 46
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 0
align 1
LABELV $604
char 1 115
char 1 99
char 1 114
char 1 105
char 1 112
char 1 116
char 1 115
char 1 47
char 1 109
char 1 97
char 1 108
char 1 101
char 1 52
char 1 46
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 0
align 1
LABELV $602
char 1 115
char 1 99
char 1 114
char 1 105
char 1 112
char 1 116
char 1 115
char 1 47
char 1 109
char 1 97
char 1 108
char 1 101
char 1 51
char 1 46
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 0
align 1
LABELV $600
char 1 115
char 1 99
char 1 114
char 1 105
char 1 112
char 1 116
char 1 115
char 1 47
char 1 109
char 1 97
char 1 108
char 1 101
char 1 50
char 1 46
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 0
align 1
LABELV $598
char 1 115
char 1 99
char 1 114
char 1 105
char 1 112
char 1 116
char 1 115
char 1 47
char 1 109
char 1 97
char 1 108
char 1 101
char 1 49
char 1 46
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 0
align 1
LABELV $596
char 1 115
char 1 99
char 1 114
char 1 105
char 1 112
char 1 116
char 1 115
char 1 47
char 1 102
char 1 101
char 1 109
char 1 97
char 1 108
char 1 101
char 1 51
char 1 46
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 0
align 1
LABELV $594
char 1 115
char 1 99
char 1 114
char 1 105
char 1 112
char 1 116
char 1 115
char 1 47
char 1 102
char 1 101
char 1 109
char 1 97
char 1 108
char 1 101
char 1 50
char 1 46
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 0
align 1
LABELV $593
char 1 115
char 1 99
char 1 114
char 1 105
char 1 112
char 1 116
char 1 115
char 1 47
char 1 102
char 1 101
char 1 109
char 1 97
char 1 108
char 1 101
char 1 49
char 1 46
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 0
align 1
LABELV $584
char 1 125
char 1 0
align 1
LABELV $575
char 1 94
char 1 49
char 1 101
char 1 120
char 1 112
char 1 101
char 1 99
char 1 116
char 1 101
char 1 100
char 1 32
char 1 123
char 1 32
char 1 102
char 1 111
char 1 117
char 1 110
char 1 100
char 1 32
char 1 37
char 1 115
char 1 32
char 1 105
char 1 110
char 1 32
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 32
char 1 99
char 1 104
char 1 97
char 1 116
char 1 32
char 1 102
char 1 105
char 1 108
char 1 101
char 1 58
char 1 32
char 1 37
char 1 115
char 1 10
char 1 0
align 1
LABELV $574
char 1 123
char 1 0
align 1
LABELV $565
char 1 94
char 1 49
char 1 101
char 1 120
char 1 112
char 1 101
char 1 99
char 1 116
char 1 101
char 1 100
char 1 32
char 1 103
char 1 101
char 1 110
char 1 100
char 1 101
char 1 114
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 102
char 1 111
char 1 117
char 1 110
char 1 100
char 1 32
char 1 105
char 1 110
char 1 32
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 32
char 1 99
char 1 104
char 1 97
char 1 116
char 1 32
char 1 102
char 1 105
char 1 108
char 1 101
char 1 58
char 1 32
char 1 37
char 1 115
char 1 10
char 1 0
align 1
LABELV $564
char 1 110
char 1 101
char 1 117
char 1 116
char 1 101
char 1 114
char 1 0
align 1
LABELV $561
char 1 109
char 1 97
char 1 108
char 1 101
char 1 0
align 1
LABELV $558
char 1 102
char 1 101
char 1 109
char 1 97
char 1 108
char 1 101
char 1 0
align 1
LABELV $548
char 1 37
char 1 115
char 1 0
align 1
LABELV $547
char 1 94
char 1 49
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 32
char 1 99
char 1 104
char 1 97
char 1 116
char 1 32
char 1 102
char 1 105
char 1 108
char 1 101
char 1 32
char 1 116
char 1 111
char 1 111
char 1 32
char 1 108
char 1 97
char 1 114
char 1 103
char 1 101
char 1 58
char 1 32
char 1 37
char 1 115
char 1 32
char 1 105
char 1 115
char 1 32
char 1 37
char 1 105
char 1 44
char 1 32
char 1 109
char 1 97
char 1 120
char 1 32
char 1 97
char 1 108
char 1 108
char 1 111
char 1 119
char 1 101
char 1 100
char 1 32
char 1 105
char 1 115
char 1 32
char 1 37
char 1 105
char 1 0
align 1
LABELV $544
char 1 94
char 1 49
char 1 118
char 1 111
char 1 105
char 1 99
char 1 101
char 1 32
char 1 99
char 1 104
char 1 97
char 1 116
char 1 32
char 1 102
char 1 105
char 1 108
char 1 101
char 1 32
char 1 110
char 1 111
char 1 116
char 1 32
char 1 102
char 1 111
char 1 117
char 1 110
char 1 100
char 1 58
char 1 32
char 1 37
char 1 115
char 1 10
char 1 0
align 1
LABELV $537
char 1 48
char 1 0
align 1
LABELV $536
char 1 99
char 1 103
char 1 95
char 1 116
char 1 104
char 1 105
char 1 114
char 1 100
char 1 80
char 1 101
char 1 114
char 1 115
char 1 111
char 1 110
char 1 0
align 1
LABELV $534
char 1 115
char 1 101
char 1 116
char 1 32
char 1 103
char 1 95
char 1 115
char 1 121
char 1 110
char 1 99
char 1 104
char 1 114
char 1 111
char 1 110
char 1 111
char 1 117
char 1 115
char 1 99
char 1 108
char 1 105
char 1 101
char 1 110
char 1 116
char 1 115
char 1 32
char 1 49
char 1 32
char 1 59
char 1 32
char 1 114
char 1 101
char 1 99
char 1 111
char 1 114
char 1 100
char 1 32
char 1 37
char 1 115
char 1 32
char 1 10
char 1 0
align 1
LABELV $527
char 1 117
char 1 105
char 1 95
char 1 109
char 1 97
char 1 116
char 1 99
char 1 104
char 1 83
char 1 116
char 1 97
char 1 114
char 1 116
char 1 84
char 1 105
char 1 109
char 1 101
char 1 0
align 1
LABELV $523
char 1 66
char 1 69
char 1 71
char 1 73
char 1 78
char 1 95
char 1 68
char 1 85
char 1 69
char 1 76
char 1 0
align 1
LABELV $522
char 1 83
char 1 86
char 1 73
char 1 78
char 1 71
char 1 65
char 1 77
char 1 69
char 1 0
align 1
LABELV $511
char 1 67
char 1 71
char 1 95
char 1 77
char 1 97
char 1 112
char 1 82
char 1 101
char 1 115
char 1 116
char 1 97
char 1 114
char 1 116
char 1 10
char 1 0
align 1
LABELV $315
char 1 64
char 1 0
align 1
LABELV $312
char 1 58
char 1 0
align 1
LABELV $309
char 1 61
char 1 0
align 1
LABELV $276
char 1 98
char 1 111
char 1 116
char 1 95
char 1 109
char 1 105
char 1 110
char 1 112
char 1 108
char 1 97
char 1 121
char 1 101
char 1 114
char 1 115
char 1 0
align 1
LABELV $275
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 98
char 1 111
char 1 116
char 1 109
char 1 105
char 1 110
char 1 112
char 1 108
char 1 97
char 1 121
char 1 101
char 1 114
char 1 115
char 1 0
align 1
LABELV $274
char 1 103
char 1 95
char 1 110
char 1 101
char 1 101
char 1 100
char 1 112
char 1 97
char 1 115
char 1 115
char 1 0
align 1
LABELV $273
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 110
char 1 101
char 1 101
char 1 100
char 1 112
char 1 97
char 1 115
char 1 115
char 1 0
align 1
LABELV $272
char 1 115
char 1 118
char 1 95
char 1 104
char 1 111
char 1 115
char 1 116
char 1 110
char 1 97
char 1 109
char 1 101
char 1 0
align 1
LABELV $271
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 104
char 1 111
char 1 115
char 1 116
char 1 110
char 1 97
char 1 109
char 1 101
char 1 0
align 1
LABELV $269
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 100
char 1 109
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 0
align 1
LABELV $267
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 109
char 1 97
char 1 120
char 1 99
char 1 108
char 1 105
char 1 101
char 1 110
char 1 116
char 1 115
char 1 0
align 1
LABELV $265
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 116
char 1 105
char 1 109
char 1 101
char 1 108
char 1 105
char 1 109
char 1 105
char 1 116
char 1 0
align 1
LABELV $263
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 99
char 1 97
char 1 112
char 1 116
char 1 117
char 1 114
char 1 101
char 1 108
char 1 105
char 1 109
char 1 105
char 1 116
char 1 0
align 1
LABELV $261
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 100
char 1 117
char 1 101
char 1 108
char 1 108
char 1 105
char 1 109
char 1 105
char 1 116
char 1 0
align 1
LABELV $259
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 102
char 1 114
char 1 97
char 1 103
char 1 108
char 1 105
char 1 109
char 1 105
char 1 116
char 1 0
align 1
LABELV $257
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 103
char 1 97
char 1 109
char 1 101
char 1 116
char 1 121
char 1 112
char 1 101
char 1 0
align 1
LABELV $254
char 1 103
char 1 95
char 1 98
char 1 108
char 1 117
char 1 101
char 1 84
char 1 101
char 1 97
char 1 109
char 1 0
align 1
LABELV $250
char 1 103
char 1 95
char 1 114
char 1 101
char 1 100
char 1 84
char 1 101
char 1 97
char 1 109
char 1 0
align 1
LABELV $248
char 1 109
char 1 97
char 1 112
char 1 115
char 1 47
char 1 37
char 1 115
char 1 46
char 1 98
char 1 115
char 1 112
char 1 0
align 1
LABELV $245
char 1 117
char 1 105
char 1 95
char 1 97
char 1 98
char 1 111
char 1 117
char 1 116
char 1 95
char 1 109
char 1 97
char 1 112
char 1 110
char 1 97
char 1 109
char 1 101
char 1 0
align 1
LABELV $244
char 1 109
char 1 97
char 1 112
char 1 110
char 1 97
char 1 109
char 1 101
char 1 0
align 1
LABELV $243
char 1 115
char 1 118
char 1 95
char 1 109
char 1 97
char 1 120
char 1 99
char 1 108
char 1 105
char 1 101
char 1 110
char 1 116
char 1 115
char 1 0
align 1
LABELV $241
char 1 116
char 1 105
char 1 109
char 1 101
char 1 108
char 1 105
char 1 109
char 1 105
char 1 116
char 1 0
align 1
LABELV $239
char 1 99
char 1 97
char 1 112
char 1 116
char 1 117
char 1 114
char 1 101
char 1 108
char 1 105
char 1 109
char 1 105
char 1 116
char 1 0
align 1
LABELV $237
char 1 100
char 1 117
char 1 101
char 1 108
char 1 95
char 1 102
char 1 114
char 1 97
char 1 103
char 1 108
char 1 105
char 1 109
char 1 105
char 1 116
char 1 0
align 1
LABELV $235
char 1 102
char 1 114
char 1 97
char 1 103
char 1 108
char 1 105
char 1 109
char 1 105
char 1 116
char 1 0
align 1
LABELV $233
char 1 116
char 1 101
char 1 97
char 1 109
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 0
align 1
LABELV $231
char 1 100
char 1 109
char 1 102
char 1 108
char 1 97
char 1 103
char 1 115
char 1 0
align 1
LABELV $229
char 1 102
char 1 100
char 1 105
char 1 115
char 1 97
char 1 98
char 1 108
char 1 101
char 1 0
align 1
LABELV $227
char 1 119
char 1 100
char 1 105
char 1 115
char 1 97
char 1 98
char 1 108
char 1 101
char 1 0
align 1
LABELV $225
char 1 103
char 1 95
char 1 106
char 1 101
char 1 100
char 1 105
char 1 86
char 1 109
char 1 101
char 1 114
char 1 99
char 1 0
align 1
LABELV $223
char 1 110
char 1 101
char 1 101
char 1 100
char 1 112
char 1 97
char 1 115
char 1 115
char 1 0
align 1
LABELV $220
char 1 37
char 1 105
char 1 0
align 1
LABELV $219
char 1 103
char 1 95
char 1 103
char 1 97
char 1 109
char 1 101
char 1 116
char 1 121
char 1 112
char 1 101
char 1 0
align 1
LABELV $130
char 1 102
char 1 111
char 1 108
char 1 108
char 1 111
char 1 119
char 1 102
char 1 108
char 1 97
char 1 103
char 1 99
char 1 97
char 1 114
char 1 114
char 1 105
char 1 101
char 1 114
char 1 0
align 1
LABELV $129
char 1 114
char 1 101
char 1 116
char 1 117
char 1 114
char 1 110
char 1 102
char 1 108
char 1 97
char 1 103
char 1 0
align 1
LABELV $128
char 1 102
char 1 111
char 1 108
char 1 108
char 1 111
char 1 119
char 1 109
char 1 101
char 1 0
align 1
LABELV $127
char 1 99
char 1 97
char 1 109
char 1 112
char 1 0
align 1
LABELV $126
char 1 112
char 1 97
char 1 116
char 1 114
char 1 111
char 1 108
char 1 0
align 1
LABELV $125
char 1 100
char 1 101
char 1 102
char 1 101
char 1 110
char 1 100
char 1 102
char 1 108
char 1 97
char 1 103
char 1 0
align 1
LABELV $124
char 1 100
char 1 101
char 1 102
char 1 101
char 1 110
char 1 100
char 1 0
align 1
LABELV $123
char 1 111
char 1 102
char 1 102
char 1 101
char 1 110
char 1 115
char 1 101
char 1 0
align 1
LABELV $122
char 1 103
char 1 101
char 1 116
char 1 102
char 1 108
char 1 97
char 1 103
char 1 0
